Int条件总是返回true?蟒蛇

0 python int conditional

我有一个名为check的函数,如此定义

def check(n):
    if n > 17325551999:
        return True
    return False
Run Code Online (Sandbox Code Playgroud)

这总是回归真实.例如

>check(1000000000)
True
>check(5)
True
Run Code Online (Sandbox Code Playgroud)

任何人都可以给我一些见解,为什么会发生这种情况?是因为数字大于最大可能的int吗?

编辑:我添加了我的python提示图片.

在此输入图像描述

Mar*_*ers 5

更新的答案:

从截图中可以清楚地看到,您没有在此处发布与实际运行时相同的代码:

def check(num):
    if n > 17325551999:
        return True
    return False
Run Code Online (Sandbox Code Playgroud)

无论是提出了NameError'n' 测试n作为一个全球性的,如果它定义.调用函数的实际参数num,并在函数中完全忽略.

换句话说,您必须分配给n全局才能使您的版本正常工作.

修复是测试正确的参数:

def check(num):
    return num > 17325551999
Run Code Online (Sandbox Code Playgroud)

屏幕截图发布前的上一个答案:

你没有传递整数.使用整数,您的代码可以正常工作:

>>> def check(n):
...     if n > 17325551999:
...         return True
...     return False
... 
>>> check(5)
False
Run Code Online (Sandbox Code Playgroud)

相反,你可能会传入字符串:

>>> check('5')
True
Run Code Online (Sandbox Code Playgroud)

在Python 2中,数字总是在字符串之前排序(在Python 3中纠正了一个错误),因此任何数字总是比字符串"更小":

>>> '0' > 0
True
Run Code Online (Sandbox Code Playgroud)

通过确保使用整数参数调用函数或n在函数中显式转换来避免此问题:

def check(n):
    return int(n) > 17325551999:
Run Code Online (Sandbox Code Playgroud)

请注意,>操作员已经返回,True或者False不需要在if此处使用.