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

Python校验用户输入星期值合法性的自定义函数异常排查

实现目标

编写函数采集用户每周可用的星期信息,满足以下要求:

  • 将用户输入的合法星期值存入列表,供后续逻辑调用
  • 校验输入的星期值格式、取值有效性,非法输入时提示用户重新输入
  • 兼容用户用空格、逗号分隔多个星期值的输入习惯
原代码逻辑缺陷

原有实现的校验逻辑无法按预期运行,核心问题如下:

  • 计数逻辑错误:内层遍历合法星期列表时,只要当前遍历到的合法值和输入项不相等,就会把校验计数器重置为0,哪怕输入项已经匹配过前面的合法值,最终计数器结果完全不可信
  • 未处理空值:用户输入连续多个空格、逗号前后带空格时,字符串拆分后会产生空字符串元素,会被误判为非法值
  • 无去重逻辑:用户重复输入同一个星期值时,返回列表会出现重复项,影响后续使用
修正后可运行代码
# 合法星期值白名单
daysWeek = ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"]

def daysInput(message):
    print("支持输入的合法星期缩写:", daysWeek)
    while True:
        # 预处理用户输入:统一首字母大写、替换逗号为空格、拆分后过滤空值
        raw_content = input(message).strip().title()
        input_items = [item for item in raw_content.replace(",", " ").split(" ") if item]
        # 逐名校验输入项
        is_valid = True
        for day in input_items:
            if day not in daysWeek:
                is_valid = False
                break
        if is_valid:
            # 去重并按周一到周日的固定顺序返回结果
            return [d for d in daysWeek if d in input_items]
        print("输入包含非法内容,请重新输入")

# 函数调用示例
if __name__ == "__main__":
    user_available_days = daysInput("请输入每周可用星期(支持空格/逗号分隔,示例:Mon,Wed Fri):")
    print("已记录的可用星期:", user_available_days)
代码特性说明
  • 兼容多种输入格式:自动处理多空格、逗号+空格、纯逗号分隔的输入,过滤无意义空值
  • 校验逻辑稳定:直接通过白名单判断输入合法性,不存在计数逻辑误差
  • 返回结果规范:自动去重,且固定按照周一到周日的顺序排列,无需后续额外排序处理
  • 逻辑简洁:移除了冗余的状态标记变量,代码可读性更高

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 05:06:05