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

输入10后Python代码中最小变量从2变为10的逻辑错误排查请求

代码逻辑错误排查:最值统计异常问题

问题场景

你编写的Python代码用于收集用户输入的数字,直到输入done为止,同时过滤非数字输入并记录输入数值的最大/最小值。但在依次输入7、2、bob、10、4时,输入10后发现smallest变量从2变成了10,还触发了第四个if pick < smallest语句。

错误原因

核心问题是你一直在用字符串做数值比较:

  • 虽然你把输入的pick转换成了整数x,但后续所有判断最值的逻辑用的都是原始字符串pick,而非转换后的整数x
  • 字符串的比较规则是按ASCII码逐字符对比,比如字符串"10"和"2"比较时,第一个字符'1'的ASCII码小于'2',所以"10" < "2"会返回True,导致smallest被错误更新为"10"
  • 初始化largest和smallest时,你赋值的也是字符串pick,而非整数x,进一步加剧了类型不匹配的问题

修正后的代码

largest = None
smallest = None
while True:    
    pick = input("Please Enter a number: ")
    
    try:
        if pick == "done":
            break
        x = int(pick)
    except ValueError:
        print("Invalid Input")
        continue

    # 初始化最值
    if largest is None:
        largest = x
    if smallest is None:
        smallest = x
    
    # 更新最值
    if x > largest:
        largest = x   
    if x < smallest:
        smallest = x

    print("largest:", largest)
    print("smallest:", smallest)

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

关键修改点

  • 所有涉及最值判断、赋值的操作,全部使用转换后的整数x,而非原始字符串pick
  • 用is None替代== None,是Python中判断空值的更规范写法
  • 保留核心逻辑的同时,移除了测试用的打印语句(若需要可自行加回)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 23:07:33