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

Python代码无报错但无限循环重复输入提示直至内核中断如何解决

问题原因

代码出现无限循环重复要求输入,由3个核心错误导致:

  • 使用while True:构造了永久循环,但循环内部没有设置任何跳出循环的逻辑,程序会一直停留在循环内重复执行输入逻辑
  • 国家匹配逻辑错误:当前写法是user_input == A,本质是拿用户输入的单个字符串和整个国家元组做相等判断,永远不可能匹配成功,所有输入都会走到country does not exist的分支,然后继续下一轮输入
  • 代码缩进混乱、元组换行不规范,Python依赖缩进判断代码块归属,乱缩进会导致逻辑执行顺序完全不符合预期,同时total变量定义在循环内部,每次循环都会被重置为0,无法实现累计赋值的需求
修复方法

按以下规则调整代码即可:

  1. 把成员判断逻辑从==改为in,判断用户输入的内容是否存在于对应收入等级的国家元组中
  2. 匹配到对应国家、输出结果后用break关键字跳出循环,也可以额外增加退出指令(比如输入exit时终止程序)
  3. 统一所有代码块的缩进,把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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 19:15:39