我有一个名为check的函数,如此定义
def check(n): if n > 17325551999: return True return False
这总是回归真实.例如
>check(1000000000) True >check(5) True
任何人都可以给我一些见解,为什么会发生这种情况?是因为数字大于最大可能的int吗?
编辑:我添加了我的python提示图片.
更新的答案:
从截图中可以清楚地看到,您没有在此处发布与实际运行时相同的代码:
def check(num): if n > 17325551999: return True return False
无论是提出了NameError
对'n'
或测试n
作为一个全球性的,如果它被定义.调用函数的实际参数num
,并在函数中完全忽略.
换句话说,您必须分配给n
全局才能使您的版本正常工作.
修复是测试正确的参数:
def check(num): return num > 17325551999
屏幕截图发布前的上一个答案:
你没有传递整数.使用整数,您的代码可以正常工作:
>>> def check(n): ... if n > 17325551999: ... return True ... return False ... >>> check(5) False
相反,你可能会传入字符串:
>>> check('5') True
在Python 2中,数字总是在字符串之前排序(在Python 3中纠正了一个错误),因此任何数字总是比字符串"更小":
>>> '0' > 0 True
通过确保使用整数参数调用函数或n
在函数中显式转换来避免此问题:
def check(n): return int(n) > 17325551999:
请注意,>
操作员已经返回,True
或者False
不需要在if
此处使用.