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

Python中or运算符误用问题求助:条件判断逻辑错误解析

解析原代码中or运算符的逻辑错误

这是个Python初学者非常容易踩的逻辑运算符坑,我来给你拆解清楚~

原代码的问题核心

你原代码里的判断条件:

if answer == "y" or "Y":

Python会按照运算符优先级把它解析成:

if (answer == "y") or ("Y"):

在Python的布尔规则里,非空字符串会被直接判定为True。也就是说,不管前面的answer == "y"是否成立,后面的"Y"本身就是一个真值,所以整个or表达式的结果永远是True——这就导致哪怕你传入"N",程序也会执行print("Yes")的分支。

几种正确的写法

你用lower()统一转小写的解法非常优雅,除此之外还有两种常见的正确写法:

  • 明确写出两个相等判断:
    def printresults(answer):
        if answer == "y" or answer == "Y":
            print("Yes")
        else:
            print("No")
    
  • 用in判断是否在目标集合里:
    def printresults(answer):
        if answer in {"y", "Y"}:
            print("Yes")
        else:
            print("No")
    

你的lower()写法其实是最简洁的,只需要一次转换就能覆盖所有大小写情况,避免重复写判断条件,非常推荐~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 09:22:35