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
相关产品推荐
相关产品推荐

