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

Python答题程序如何实现非法输入重提与循环询问重玩功能

Python答题程序修复方案

完整修改后代码

import sys

class Question:
    def __init__(self, prompt, answer):
        self.prompt = prompt
        self.answer = answer

question_prompts = [
    '苹果是什么颜色?\n(a) 红/绿\n(b) 紫\n(c) 橙\n\n',
    '香蕉是什么颜色?\n(a) 蓝绿色\n(b) 品红色\n(c) 黄\n\n',
    '草莓是什么颜色?\n(a) 黄\n(b) 红\n(c) 蓝\n\n',
]

questions = [
    Question(question_prompts[0], 'a'),
    Question(question_prompts[1], 'c'),
    Question(question_prompts[2], 'b'),
]

def run_test(questions):
    score = 0
    # 遍历所有题目
    for question in questions:
        # 单题输入校验循环,输入不合法就一直重输当前题
        while True:
            answer = input(question.prompt).strip().lower()
            if answer not in ['a', 'b', 'c']:
                print('您输入的不是a、b、c选项,请重新输入')
                continue
            # 输入合法跳出当前循环
            break
        # 判断答案是否正确
        if answer == question.answer:
            score += 1
    print(f'您的得分是 {str(score)}/{str(len(questions))}')

# 主逻辑循环,实现多次重玩
while True:
    run_test(questions)
    # 重玩选择校验
    while True:
        choice = input("是否重新游玩?请输入是或否:").strip()
        if choice not in ['是', '否']:
            print('输入无效,请输入是或否')
            continue
        break
    if choice == '否':
        sys.exit(0)

问题修复说明

问题1:非法输入重复提问修复

  • 原代码的while循环错误嵌套在题目遍历逻辑外层,会导致无限重复整套题目,且输入校验逻辑位置错误
  • 将while循环放在单道题的输入逻辑内,仅当用户输入a/b/c三个合法选项后才会进入答案判断步骤,否则始终停留在当前题目要求重输
  • 同时修复了原代码答案判断逻辑缩进错误的问题,原逻辑仅会判断最后一道题的答案是否正确

问题2:持续重玩功能修复

  • 原代码仅在第一次答题结束后调用一次重玩询问,无法实现多次循环重玩
  • 新增外层无限循环包裹答题+重玩询问逻辑,每次答题结束后自动触发重玩询问,用户输入是就重新启动答题流程,输入否直接退出程序
  • 额外增加重玩输入校验逻辑,用户输入非是/否的内容时会要求重新输入,避免程序异常

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 01:48:02