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

Python迭代处理整浮点数值求最值 遍历字符致结果异常求解

问题根因

代码存在两处核心逻辑错误:

  • 你已经在try块中将输入字符串转换为了完整浮点数fnum,但后续比较环节完全没有使用这个合法数值,反而遍历原始输入字符串num的单个字符,拿'5'、'6'这类单数字字符做大小对比,本质是对比字符的ASCII值,并非对比完整数值,因此才会出现输入56、77、17时,错误返回单字符最大值'7'、最小值'1'的问题。
  • 未存储所有有效输入的数值,无法满足“输出所有输入数值”的需求。
修正后代码

直接替换原有逻辑即可,修复点包含:新增列表存储所有有效数值、移除遍历字符串的错误比较逻辑、直接用转换完成的浮点数做最值对比:

largest = None
smallest = None
valid_nums = []
while True:
    num = input("Enter a number: ")
    if num == "done":
        break
    try:
        fnum = float(num)
    except:
        print("Invalid input")
        continue
    valid_nums.append(fnum)
    print(num)

    # 直接对比完整数值更新最值
    if smallest is None or fnum < smallest:
        smallest = fnum
    if largest is None or fnum > largest:
        largest = fnum

print("所有输入的有效数值:", valid_nums)
print("Maximum is", largest)
print("Minimum is", smallest)
效果验证

依次输入56、77、17、abc、done时,程序会先对非数字输入abc返回错误提示,结束输入后正确输出有效数值列表[56.0, 77.0, 17.0],返回最大值77、最小值17,符合预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 10:54:16