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

Python如何实现循环重复直到用户输入完星期列表所有元素

星期名称循环收集功能解决方案

原代码存在的核心问题

  • 输入获取逻辑位置错误:input() 仅在while循环外调用1次,循环执行过程中不会重新拉取用户新输入,要么直接跳过循环,要么进入后触发无限死循环
  • 校验逻辑位置错误:输入合法性校验、重复值校验的逻辑全部写在循环外部,无法在每次用户提交输入后即时给出反馈
  • 循环终止条件设置错误:原逻辑只要输入值属于合法星期名就持续循环,没有设置「收集满7个不同星期名就退出」的终止规则
  • 存在语法错误:残缺的if answer语句会直接导致代码运行前就抛出语法异常

修复后可直接运行的代码

# 初始化已收集星期列表、合法星期名参考列表
days = []
valid_days = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday']

# 未收集满7个不同合法星期时,持续循环提问
while len(days) < 7:
    answer = input('Enter a day of the week: ').strip() # 每轮循环重新获取输入,自动去除首尾多余空格
    # 校验是否为合法星期名
    if answer not in valid_days:
        print(f'Sorry {answer} is not a day of the week.')
    # 校验是否已经收集过
    elif answer in days:
        print('Sorry already in our list.')
    # 合法且未收集过则追加进列表
    else:
        days.append(answer)
        print(f'{answer} has been added to our days of the week.')
        print(days)

# 收集满7个后输出恭喜提示
print('Congratulations! You have entered all days of the week!')

逻辑说明

  • 循环判断条件直接绑定已收集列表长度,只要长度小于7就持续运行,从根源上避免漏收集、多收集问题
  • 每次用户输入后按顺序做三层判断:先校验是否为合法星期名,再校验是否重复,都不触发才执行追加操作,完全匹配示例运行效果
  • 输入获取逻辑放在循环内部,每轮交互都会等待用户新输入,不会出现死循环或者仅提问一次的问题
  • 循环正常退出的唯一条件是收集齐7个不重复的合法星期名,退出后直接输出恭喜提示即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 22:30:57