Python代码中x=1时为何会进入if分支?
问题原因与修正方案
你的代码里的if条件逻辑有误,导致每次循环都会进入分支打印'hi',包括x=1的时候。
问题根源
你写的判断条件是:
if 'byrne' or 'apple' == mylist[x][0]:
在Python中,这个表达式会被解析为 ('byrne') or ('apple' == mylist[x][0])。由于非空字符串'byrne'在布尔判断中永远为True,逻辑或or只要左侧为真,就会直接返回True,完全不会执行右侧的判断。所以不管当前元素是什么,这个条件永远成立,自然每次循环都会打印'hi'。
正确写法
要实现仅当元素是'apple'或'byrne'时打印'hi',有两种常用写法:
- 判断元素是否在目标字符串列表中(更简洁):
if mylist[x][0] in ['byrne', 'apple']:
- 明确写出两个相等判断,用
or连接:
if mylist[x][0] == 'byrne' or mylist[x][0] == 'apple':
修正后的完整代码
mylist = [['apple',1],['banana',2],['byrne',3]] x = 0 for y in mylist: print(x) print(mylist[x][0]) if mylist[x][0] in ['byrne', 'apple']: print('hi') x += 1
修正后的输出
0 apple hi 1 banana 2 byrne hi
内容的提问来源于stack exchange,提问作者NiceIce
相关产品推荐
相关产品推荐

