Python代码无报错但无限循环重复输入提示直至内核中断如何解决
问题原因
代码出现无限循环重复要求输入,由3个核心错误导致:
- 使用
while True:构造了永久循环,但循环内部没有设置任何跳出循环的逻辑,程序会一直停留在循环内重复执行输入逻辑 - 国家匹配逻辑错误:当前写法是
user_input == A,本质是拿用户输入的单个字符串和整个国家元组做相等判断,永远不可能匹配成功,所有输入都会走到country does not exist的分支,然后继续下一轮输入 - 代码缩进混乱、元组换行不规范,Python依赖缩进判断代码块归属,乱缩进会导致逻辑执行顺序完全不符合预期,同时
total变量定义在循环内部,每次循环都会被重置为0,无法实现累计赋值的需求
修复方法
按以下规则调整代码即可:
- 把成员判断逻辑从
==改为in,判断用户输入的内容是否存在于对应收入等级的国家元组中 - 匹配到对应国家、输出结果后用
break关键字跳出循环,也可以额外增加退出指令(比如输入exit时终止程序) - 统一所有代码块的缩进,把
total变量的初始化移到循环外部,修正元组内字符串换行断裂的问题
修复后的可运行代码如下:
# 高收入国家 A = ("Aruba", "Andorra", "United Arab Emirates", "Antigua and Barbuda", "Australia", "Austria", "Belgium", "Bahrain", "Bahamas", "Bermuda", "Barbados") # 低收入国家 B = ("Afghanistan", "Burundi", "Zambia", "Burkina Faso", "Central African Republic", "Syrian Arab Republic","Congo Dem. Rep") # 中等收入国家 C = ("Angola", "Albania", "Argentina", "Armenia", "American Samoa", "Azerbaijan", "Benin", "Bangladesh","Bulgaria") total = 0 while True: user_input = input('Enter Country Name(输入exit可退出程序): ').strip() # 退出程序逻辑 if user_input.lower() == 'exit': print("程序已退出") break if user_input in A: total += 1 print(total, "高收入国家匹配成功") break elif user_input in B: total += 2 print(total, "低收入国家匹配成功") break elif user_input in C: total += 3 print(total, "中等收入国家匹配成功") break else: print("country does not exist,请重新输入")
内容的提问来源于stack exchange,提问作者makenzie
相关产品推荐
相关产品推荐

