Int条件总是返回true?蟒蛇

 _九酒_882 发布于 2023-02-04 19:24

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

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

这总是回归真实.例如

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

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

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

在此输入图像描述

1 个回答
  • 更新的答案:

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

    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此处使用.

    2023-02-04 19:27 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有