我有一个名为check的函数,如此定义
def check(n):
if n > 17325551999:
return True
return False
总是返回true。例如
>check(1000000000)
True
>check(5)
True
任何人都可以告诉我为什么会这样吗?是因为数字大于最大可能的int?
编辑:我添加了我的python提示图片。
答案 0 :(得分:5)
更新回答:
从你的截图中可以清楚地看到,你没有在这里发布与你实际运行的相同的代码:
def check(num):
if n > 17325551999:
return True
return False
如果 定义,则NameError
或测试'n'
n
作为全局提升。{p>该函数的实际参数称为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
。