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

Python 3如何实现问答测验的选项限制 仅允许输入a/b/c/d

实现测验选项输入限制的Python方案

方案1:轻量循环校验(单题场景适用)

不需要写多层if判断,直接通过集合成员校验实现,逻辑简单易懂,适合新手快速集成:

# 定义合法选项集合,成员查询速度远高于列表
valid_options = {'a', 'b', 'c', 'd'}

while True:
    # 自动去除首尾空格+转小写,兼容用户误输入大写、带空格的情况
    user_input = input("请输入选项(a/b/c/d):").strip().lower()
    # 可额外加长度判断,避免用户输入多个字符
    if len(user_input) == 1 and user_input in valid_options:
        break
    print("输入不合法,请仅输入a、b、c、d中的一个选项")

# 此处可继续编写user_input对应的后续逻辑

方案2:封装为通用函数(多题测验场景适用)

如果你的测验包含多道题目,可将校验逻辑封装为可复用函数,避免重复编写代码:

def get_quiz_answer(prompt: str, valid_options: set = None) -> str:
    # 默认合法选项为a/b/c/d,可自定义传入其他选项集合
    if valid_options is None:
        valid_options = {'a', 'b', 'c', 'd'}
    while True:
        input_val = input(prompt).strip().lower()
        if len(input_val) == 1 and input_val in valid_options:
            return input_val
        print(f"输入无效,请输入以下选项之一:{'/'.join(valid_options)}")

# 每道题直接调用函数即可
ans1 = get_quiz_answer("第1题:xxx 请输入选项:")
ans2 = get_quiz_answer("第2题:xxx 请输入选项:")

注意事项:

  • 若不需要兼容大写输入,删除代码中的.lower()即可
  • 若后续需要新增e、f等选项,只需修改valid_options集合的内容即可,不需要调整校验逻辑

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 15:06:02