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
相关产品推荐
相关产品推荐

