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

Python求输入整数最值程序问题求助:无法识别无效输入及计算最值

问题分析与代码修正

现有代码的核心问题

  • 硬编码循环次数(for i in range(2,10)),不符合"直到输入'done'才停止"的需求
  • 未处理非数字输入的异常,直接执行int()转换会触发报错崩溃
  • 后段的while循环仅接收输入,未执行数字转换、最大最小值的计算逻辑
  • 使用Python内置类型名list作为变量名,会覆盖内置功能,属于不良编码习惯

修正后的代码

largest = None
smallest = None

while True:
    num_input = input("Enter a number: ")
    if num_input == "done":
        break
    
    try:
        num = int(num_input)
    except ValueError:
        print("Invalid input")
        continue
    
    # 初始化或更新最大值
    if largest is None or num > largest:
        largest = num
    # 初始化或更新最小值
    if smallest is None or num < smallest:
        smallest = num

print(f"Maximum is {largest}")
print(f"Minimum is {smallest}")

关键逻辑说明

  1. 循环控制:用while True实现无限循环,直到用户输入'done'时触发break退出
  2. 异常处理:通过try/except ValueError捕获非数字输入,打印提示后用continue跳过后续逻辑
  3. 最大最小值更新:
    • 首次输入有效数字时,largest和smallest为None,直接赋值
    • 后续输入时,与当前存储的最大/最小值比较,更新为更大/更小的数值
  4. 输出格式:使用f-string格式化输出,匹配预期的结果样式

测试输入7、2、bob、10、4时,输出与预期完全一致:

Invalid input
Maximum is 10
Minimum is 2

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 10:45:27