Python多选问答游戏用户输入校验功能异常问题求解
多选问答游戏输入校验问题修复
现有代码问题原因
- 调用
validate_input时参数错误,误传内置函数input而非用户实际输入的变量 validate_input函数逻辑失效:- 内部直接覆盖了传入的输入值为固定提示字符串,无法读取用户真实输入
- 仅判断了输入为空的场景,未校验输入是否属于
a/b/c/d合法范围 - 校验失败后没有重新获取用户输入,也没有返回合规的输入值
- 执行流程未等待校验通过就直接进入答案判断环节,非法输入被直接判定为答错
修复后代码
def quiz_game(): questions_num = 0 score = 0 for key in questions: print("...................") print(key) for x in answers[questions_num]: print(x) # 直接调用校验函数获取合法输入,替代原有输入+校验的错误写法 guess = validate_input() if answer_input(guess, questions_num): print('Your answer is correct') score += 1 else: print('Your answer is wrong') # 无论对错都切换下一题,不需要每个分支重复写自增逻辑 questions_num += 1 points(score) def validate_input(): # 定义合法输入集合 valid_options = {'a', 'b', 'c', 'd'} while True: # 获取输入并去除首尾空格、转小写兼容大写输入 user_input = input('Enter a, b, c or d: ').strip().lower() if user_input in valid_options: return user_input # 非法输入给出提示,循环要求重新输入 print("输入无效,请输入a、b、c、d中的有效选项")
内容的提问来源于stack exchange,提问作者Damhán
相关产品推荐
相关产品推荐

