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

Python条件判断中or替代and的差异及异常问题咨询

逻辑运算符误用导致的程序异常问题

问题描述

将以下Python代码中第三行if条件里的and替换为or后,无论输入什么内容,程序都会返回"Aww okay, maybe next time?"并退出;使用and时程序运行正常,请问该现象的原因是什么?

相关代码

permission = str(input("Would you like to take a quiz?\n")).lower()

if permission != "yes" and permission != "sure":
    print("Aww okay, maybe next time?")
    exit(0)
else:
    questionAnswer = input("Great! Do you know what keyword if and else make together?\n").lower()
    if questionAnswer == "elif":
        secondQuestion = input("Correct! Now, what does print do?\n").lower()
    else:
        secondQuestion = input("Incorrect, what is a integer?\n").lower()
    # noinspection PyUnboundLocalVariable
    if secondQuestion == "it prints a statement":
        print("Correct! You scored 2/2 on this test.\n")
    elif secondQuestion.lower() == "a whole number":
        print("Correct! You scored a 1/2 on this test.\n")

原因分析

这是逻辑运算符的判断规则差异导致的:

  • 使用and的正确逻辑:
    原条件permission != "yes" and permission != "sure"表示:只有当输入**既不是"yes",同时也不是"sure"**的时候,才触发退出逻辑。这符合需求——只要输入是两者中的任意一个,就会进入问答环节。
  • 替换为or后的错误逻辑:
    修改后的条件permission != "yes" or permission != "sure"表示:只要输入不是"yes",或者不是"sure",就触发退出。但任何输入都无法同时满足"是yes"和"是sure",所以:
    • 输入"yes"时,permission != "sure"为真,整个or条件成立,触发退出;
    • 输入"sure"时,permission != "yes"为真,整个or条件成立,触发退出;
    • 输入其他内容时,两个判断都为真,自然也触发退出。
      因此无论输入什么,程序都会执行退出逻辑。

简单总结:要判断"输入不属于A和B中的任何一个",必须用and;用or会导致逻辑完全相反,覆盖所有输入场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 12:03:28