Int条件总是返回true?蟒蛇

时间:2014-01-09 15:34:25

标签: python int conditional

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

def check(n):
    if n > 17325551999:
        return True
    return False

总是返回true。例如

>check(1000000000)
True
>check(5)
True

任何人都可以告诉我为什么会这样吗?是因为数字大于最大可能的int?

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

enter image description here

1 个答案:

答案 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:

请注意,>运算符已返回TrueFalse,此处无需使用if