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

Python循环逻辑错误排查:大小写不敏感匹配与循环终止问题

问题分析与代码修正

代码中的核心错误

  • 大小写敏感问题:原代码直接用==比较输入与城市名,未处理大小写差异,只有输入和列表内完全一致的大小写才能匹配(比如输入acme无法匹配Acme)。
  • 循环逻辑混乱:
    • while CitiesInMichigan is True完全无效,CitiesInMichigan是列表,永远不可能等于布尔值True,导致匹配成功的逻辑根本无法执行。
    • else分支与while绑定而非if,逻辑结构完全错误。
    • 重新输入时仅调用input()但未将新值赋值给inCity,后续判断仍使用最初的输入值。
  • 冗余的遍历方式:for i in range(len(CitiesInMichigan))属于低效写法,直接遍历列表元素更简洁。

改进后的代码

# 密歇根城市列表
CitiesInMichigan = ["Acme", "Albion", "Detroit", "Watervliet", "Coloma", "Saginaw", "Richland", "Glenn", "Midland", "Brooklyn"]

while True:
    # 获取输入并统一转为小写,实现大小写不敏感匹配
    inCity = input("Enter name of city: ").lower()
    # 检查输入是否匹配列表中的任意城市(统一大小写后比较)
    if any(city.lower() == inCity for city in CitiesInMichigan):
        print("City found.")
        break  # 匹配成功,终止程序
    else:
        print("Not a city in Michigan.")

改进说明

  • 用while True构建无限循环,匹配成功后通过break退出,满足“失败则重新输入”的需求。
  • 调用lower()将输入和城市名统一转为小写,彻底解决大小写不敏感匹配的问题。
  • 使用any()结合生成器表达式,简洁高效地判断是否存在匹配项,比手动遍历更易读。
  • 每次循环重新获取输入并赋值给inCity,确保判断使用最新的用户输入。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 03:40:12