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

Python中min/max相关代码的try-except无法捕获错误问题

问题分析与修复方案

问题根源

你的代码输入非数字字符串(比如abcd)时不会触发"Invalid input",反而把它当成最小/最大值,核心原因有两个:

  • 没有将用户输入转换为数值类型,直接用字符串做大小比较——字符串之间的比较是Python允许的合法操作,不会抛出异常,所以except块根本不会执行。
  • 整个try块里没有任何会触发异常的代码,except形同虚设。

修复步骤

  • 把输入转为数值:在try块里先将输入的字符串转换成float(兼容整数和小数),如果输入不是合法数字,这一步会抛出ValueError,触发异常处理。
  • 用数值做比较:后续的最小/最大值判断,用转换后的数值而非原字符串。
  • 避免内置函数名冲突:别用min、max当变量名,这俩是Python内置函数,改成current_min、current_max更稳妥。

修复后的完整代码

current_min = None
current_max = None
while True:
    line = input('Enter a number: ')
    try:
        if line == 'done':
            break
        # 转换输入为数值,非法输入时会抛出异常
        num = float(line)
        # 更新最小值
        if current_min is None or num < current_min:
            current_min = num
            print("min:", current_min)
        # 更新最大值
        if current_max is None or num > current_max:
            current_max = num
            print("max:", current_max)
    except ValueError:
        # 精准捕获数值转换异常,避免误捕其他错误
        print('Invalid input')
        continue
print(current_min, current_max)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 06:15:38