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

火山引擎 最新活动