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

Python条件判断语句逻辑异常求助:无论输入答案均判定为正确

Python Quiz 程序总是返回“正确答案”的问题修复

问题诊断

你的代码核心问题出在条件判断的逻辑写法错误。比如这一行:

if 'Christopher Columbus' or 'christopher columubus' == query:

在Python中,非空字符串会被视为布尔值True,所以'Christopher Columbus'本身就是真命题,导致整个if条件永远成立——不管用户输入的query是什么内容,都会直接进入“正确答案”的分支。同样的错误也出现在第二个问题的条件判断if "Russia" or 'russia' == query:中。

另外还要注意第一个问题里的拼写笔误:'christopher columubus'应该是'christopher columbus',这个错误会导致用户输入正确拼写时反而被判定为错误。

修复方案

我们需要修正条件判断的写法,确保是在判断query是否匹配目标答案。这里提供两种更合理的实现方式:

方式1:明确的多值匹配

直接让每个判断都指向query,避免逻辑短路:

elif "quiz" in query:
    executed1 = 0
    executed2 = 0
    executed3 = 0
    executed4 = 0
    executed5 = 0
    correct = 0
    q = 0
    while q < 5:
        quiz = random.randint(1, 5)
        if quiz == 1:
            if executed1 == 1:
                pass
            else:
                print("Question) Who discovered The United States of America?")
                speak("Question) Who discovered The United States of America?")
                trivia()  # 假设此函数会将用户输入更新到query变量
                if query == 'Christopher Columbus' or query == 'christopher columbus':
                    speak("Correct Answer!")
                    correct += 1
                    executed1 = 1
                else:
                    print("Wrong Answer!")
                    speak("Wrong Answer")
                    executed1 = 1
                q += 1
        elif quiz == 2:
            if executed2 == 1:
                pass
            else:
                print("Question) Which nation was the first to go in space?")
                speak("Question) Which nation was the first to go in space?")
                trivia()
                if query == "Russia" or query == 'russia':
                    print("Correct Answer")
                    speak("Correct Answer!")
                    correct += 1
                    executed2 = 1
                else:
                    print("Wrong Answer!")
                    speak("Wrong Answer!")
                    executed2 = 1
                q += 1
        # 其他问题的判断逻辑请按此格式修改

方式2:忽略大小写的匹配(更简洁)

将query转换为小写后,和统一小写的答案比较,这样可以覆盖所有大小写组合的输入,代码也更简洁:

elif "quiz" in query:
    executed1 = 0
    executed2 = 0
    executed3 = 0
    executed4 = 0
    executed5 = 0
    correct = 0
    q = 0
    while q < 5:
        quiz = random.randint(1, 5)
        if quiz == 1:
            if executed1 == 1:
                pass
            else:
                print("Question) Who discovered The United States of America?")
                speak("Question) Who discovered The United States of America?")
                trivia()
                # 统一转换为小写,避免大小写干扰
                if query.lower() == 'christopher columbus':
                    speak("Correct Answer!")
                    correct += 1
                    executed1 = 1
                else:
                    print("Wrong Answer!")
                    speak("Wrong Answer")
                    executed1 = 1
                q += 1
        elif quiz == 2:
            if executed2 == 1:
                pass
            else:
                print("Question) Which nation was the first to go in space?")
                speak("Question) Which nation was the first to go in space?")
                trivia()
                if query.lower() == "russia":
                    print("Correct Answer")
                    speak("Correct Answer!")
                    correct += 1
                    executed2 = 1
                else:
                    print("Wrong Answer!")
                    speak("Wrong Answer!")
                    executed2 = 1
                q += 1
        # 其他问题同理修改

额外优化建议

可以把题目和答案整理成字典列表,减少重复的if-elif结构,让代码更易维护:

# 提前定义题库
quiz_questions = [
    {
        "question": "Who discovered The United States of America?",
        "answer": "christopher columbus"
    },
    {
        "question": "Which nation was the first to go in space?",
        "answer": "russia"
    }
    # 继续添加其他题目
]

之后通过循环遍历题库来实现答题逻辑,避免大量重复代码。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.27 19:12:53