关于#python#的问题:未知逻辑错误

代码如下:

a=['a','b','c']
for i in a:
    if i == 'a' or 'b':
        print(i)

按照我的逻辑思维, 这里的运行结果应该是

a
b

但是运行结果却是

a
b
c

运行环境python 3.9.6, 是为最新的稳定版本

你这个 if i == 'a' or 'b': 判断逻辑有问题,
不是你想象的i等于a或者等于b。
i == 'a' or 'b' 是用 or 分隔的 i == 'a' 和 'b' 两个条件表达式。
其中'b'是一个单独的条件表达式,'b'在条件判断时永远为真, or 两边是任何一边为真结果就是真,。
所以i == 'a' or 'b'表达式就是永远为真。

正确的是
if i == 'a' or i == 'b':

要简写可以这样子
if i in {'a','b'}:
这里用集合比用列表稍快一些。


如有帮助,望采纳!谢谢! 点击我这个回答右上方的【采纳】按钮


if i == 'a' or i == 'b':

这样才对,望采纳~😁

xd,你这个判断语句有问题啊!

if i == 'a' or 'b'

这个语句无论i取什么值,都为真(True),如果楼主要想实现那种效果,可以这样写啊!

if i == 'a' or i == 'b':
# 或者
if i in ['a','b']:

or 应该是两边表达式真假的判断,如果其中一个表达式有一个为True就执行下面代码块,而不是字面意思上的一个变量等于谁或谁就执行下面的代码块
这才是正确写法:

a=['a','b','c']
for i in a:
    if i == 'a' or i=='b':
        print(i)

还有什么问题尽管问我,如果没有希望采纳~