我有一个名为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提示图片.

更新的答案:
从截图中可以清楚地看到,您没有在此处发布与实际运行时相同的代码:
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此处使用.