You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python程序异常:10被误判为小于2的最小值求助排查

问题排查:程序误判10为最小数字的原因及修复方案

你的代码核心问题是把字符串当成数字做比较了:
你虽然用int(num)做了输入合法性校验,但没有把转换后的整数保存下来,后续的largest < num、smallest > num都是在对比字符串,而非数字。

字符串比较是按字符ASCII码逐位来的:'10'的第一个字符是'1'(ASCII码49),'2'的第一个字符是'2'(ASCII码50),所以字符串层面'10' < '2'会返回True,这就导致程序错误认定10比2小,最终把它设成了最小值。

修复后的代码

largest = None
smallest = None
while True:
    print('largest:', largest)
    print('smallest:', smallest)
    num_str = input('Enter a number: ')
    if num_str == 'done':
        break

    try:
        # 关键:把转换后的整数存下来,后续用这个数字做所有比较
        num = int(num_str)
    except:
        print('Invalid input')
        continue

    if largest is None and smallest is None:
        print('if largest == None and smallest == None :', largest is None and smallest is None)
        print("Setting value of largest to", num)
        largest = num
        print("Setting value of smallest to", num)
        smallest = num
    elif largest < num:
        print("Largest < num")
        largest = num
    elif smallest > num:
        print("smallest > num")
        smallest = num
    else:
        print("Something else")
    print(num)

print("Maximum", largest)
print("Minimum", smallest)

关键修改点

  • 拆分输入字符串和数字:将原始输入存为num_str,转换后的整数存为num,后续所有比较、赋值都用数字类型的num
  • 用is None替代== None,这是Python中判断空值更规范的写法

内容的提问来源于stack exchange,提问作者Clayton Collins

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 03:57:13