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

Python新手求助:全名查重循环程序无法正常运行问题

问题分析与修正代码

原代码的核心问题:

  • 误用Python内置关键字list作为变量名,建议换成自定义名称(比如existing_names)
  • for循环里的break位置错误,导致只检查列表第一个元素就终止循环,无法完成全列表查重
  • 循环逻辑混乱:重复时没触发重新输入,不重复时也没退出while循环,还会错误重复打印提示

修正后的代码:

# 原有姓名列表,避免使用内置关键字list当变量名
existing_names = ["M T", "Smith Jenkins", "P T", "C P"]
# 预先把列表里的姓名处理成无空格格式,存为集合(查重效率更高)
processed_names = {"".join(name.split()) for name in existing_names}

while True:
    user_input = input("Your full name :")
    # 处理用户输入,移除所有空格
    user_check = "".join(user_input.split())
    
    # 检查是否重复
    if user_check in processed_names:
        print("Duplicated! Please enter new name")
        # 回到循环开头,重新获取用户输入
        continue
    else:
        # 无重复,打印感谢并退出循环
        print("Thanks")
        break

代码逻辑说明:

  • 预先处理原有姓名列表,转成无空格的集合,后续查重更高效
  • 用户输入后统一处理成无空格字符串,保证比对标准一致
  • 用in直接判断是否重复,无需手动遍历循环
  • 重复时用continue回到循环开头重新输入;不重复时用break退出循环,确保只打印一次提示

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 10:24:50