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

Python技术疑问:为何输入-99后while循环仍无法终止?

问题分析与解决

你的循环无法终止的核心原因是类型不匹配:input()函数返回的是字符串类型,而你定义的终止符end_number = -99是整数类型,字符串和整数永远不会相等,所以循环条件num != end_number永远为True,循环停不下来。

除此之外,代码还有几个逻辑问题:

  • 初始输入直接加入列表,没判断是否是终止符(如果用户一开始就输入-99,这个无效值也会被加入列表)
  • 循环内只获取新输入,没有把合法数字加入列表,最后计算min/max时列表里只有初始输入的内容
  • 最后打印最大值的语句写错了,重复写了"smallest"

修正后的代码

end_number = -99
list_of_numbers = []

while True:
    # 获取输入并转为整数,处理非整数输入的情况
    try:
        num = int(input("Enter Number: "))
    except ValueError:
        print("请输入有效的整数!")
        continue
    
    # 输入终止符则退出循环
    if num == end_number:
        break
    
    # 有效数字加入列表
    list_of_numbers.append(num)

# 处理无有效输入的边界情况
if list_of_numbers:
    print("The smallest number was", min(list_of_numbers))
    print("The largest number was", max(list_of_numbers))
else:
    print("你没有输入任何有效数字!")

关键修改点

  • 类型统一:用int()把输入字符串转为整数,确保和终止符类型一致,能正确判断相等性
  • 循环逻辑重构:用while True构建无限循环,内部判断终止条件,逻辑更清晰;先判断是否为终止符,再决定是否加入列表
  • 异常处理:加入try-except捕获非整数输入,避免程序崩溃
  • 边界处理:判断列表是否为空,防止用户直接输入-99时调用min()/max()报错
  • 细节修正:修正输入提示的拼写错误,以及打印最大值的文本错误

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 21:55:22