- 此问题在此处已有答案**:
Why does "a == x or y or z" always evaluate to True? How can I compare "a" to all of those?(8个答案)
17小时前关闭。
if genre == 'Social Networking' or 'Games':
以上结果与以下结果不同:
if genre == 'Social Networking' or genre == 'Games':
有人知道为什么会这样吗?如果需要的话,下面是完整的代码,这只是我正在做的一个python初学者课程的dataquest。
opened_file = open('AppleStore.csv')
from csv import reader
read_file = reader(opened_file)
apps_data = list(read_file)
games_social_ratings = []
for row in apps_data[1:]:
rating = float(row[7])
genre = row[11]
# Complete code from here
if genre == 'Social Networking' or == 'Games':
games_social_ratings.append(rating)
avg_games_social = sum(games_social_ratings)/len(games_social_ratings)
print (avg_games_social)
1条答案
按热度按时间vx6bjr1n1#
唯一能让这句话有意义的方法是:
你可能会认为这意味着类似这样的东西(但它实际上并没有这样求值):
在这里,
'Social Networking' or 'Games'
将是or
对两个字符串值的操作,就好像它们是布尔值一样,并且空字符串''
不是真的(即,评估为False
),而非空字符串 * 是 * 真的(即,评估为True
)。因此,
'Social Networking' or 'Games'
是True
,代码将与以下代码相同:这不是你想要的。
or
是一个逻辑运算符,它接受两个布尔值,如果其中一个或两个操作数都是True
,则计算结果为True
。它并不意味着英语中“or”的所有含义。然而,正如评论中所指出的,这里真正发生的是:
因为
==
比or
绑定得更强,所以genre == 'Social Networking'
首先被求值。如果它求值为True
,则整个表达式的结果将是True
(or
的第二个操作数甚至没有计算)。如果计算结果为False
(即,genre
不是'Social Networking'
),则整个表达式求值为'Games'
,这是正确的,因此整个表达式为True
。无论哪种情况,结果都是
True
,无论genre
的值是多少。