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

Python无限循环获取用户输入最值的问题修复请求

问题分析与修复方案

问题根源

你碰到的问题核心是字符串比较逻辑和数值比较逻辑搞混了:

  • input()返回的是字符串,你虽然用float(num)做了有效性校验,但没把转换后的数值存下来,后续的num > largest、num < smallest都是在比字符串,不是比数字大小。
  • 单数字的字符串(比如"7"、"2")的ASCII顺序刚好和数值大小一致,所以前两次输入看起来正常;但多数字的字符串(比如"10")是按字符逐个比的,"1"的ASCII码比"7"小,所以"10"会被判定为比"7"小,就出现了你看到的错误。

修复后的代码

largest = None
smallest = None

while True :
    num_str = input('Enter a number: ')
    if num_str == 'done' :
        break
    try :
        num = float(num_str)  # 把输入的字符串转成数值存起来
    except :
        print('Invalid input')
        continue
    # 所有比较和赋值都用数值类型的num
    if largest is None :
        largest = num
    elif num > largest:
        largest = num
    if smallest is None :
        smallest = num
    elif num < smallest :
        smallest = num
    print(num, largest, smallest)
print('Maximum is', largest)
print('Minimum is', smallest)

关键改动

  • 把输入的字符串单独存为num_str,转换后的数值存在num里,后续所有比较、赋值操作都用这个数值类型的变量。
  • 让largest和smallest始终存储数值而非字符串,这样比较逻辑才符合我们对数字大小的预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 14:15:36