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

Python实现州首府字典增查功能时出现无限循环问题排查

问题根因
  • 仅在「州缩写不存在于字典」的分支中写了更新用户输入的代码,当输入的州缩写已存在时,state变量的值不会被更新,while state !=''的循环条件始终满足,因此触发无限打印逻辑。
  • 额外注意:原代码中的count(sc)如果没有提前自定义实现,运行时会直接抛出NameError。
修复后代码
def main():
    sc = {
        'FL': 'Tallahassee',
        'AK': 'Juneau',
        'AZ': 'Phoenix',
        'CA': 'Sacramento',
    }
    # 若未定义count()函数请删除下一行
    # count(sc)
    print("我们来补充更多州首府信息吧")
    state = input('请输入州缩写,直接按回车可退出程序:')
   
    while state != '':
        if state in sc:
            print(f'已收录该州,{state}的首府是{sc[state]}')
        else:
            capital = input('请输入该州的首府名称:')
            sc[state] = capital      
        # 无论分支逻辑如何,统一获取下一次输入
        state = input('请输入州缩写,直接按回车可退出程序:')
        
    sc_len = len(sc)
    print(f'当前共收录{sc_len}个州的首府信息,清单如下:')
    for key, value in sc.items():
        print(f'{key}的首府是{value}')

if __name__ == '__main__':
    main()
修复说明
  • 将输入更新逻辑从分支内移到循环体末尾,所有分支执行完成后都会等待用户下一次输入,彻底解决死循环问题
  • 把两个独立的if判断改成if-else结构,减少一次重复的字典key存在性校验,逻辑更简洁
  • 完全匹配需求:已有缩写直接输出首府,无匹配提示录入首府,空输入退出后打印全量州与首府对应关系
  • 已将交互提示替换为中文,如果你需要英文交互,直接替换代码中print、input内的中文文本即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 22:57:01