Python中两行条件判断代码输出不同的原因咨询
两行Python条件判断代码的差异解析
错误写法的问题
先看这段代码:
if genre == 'Social Networking' or 'Games':
Python中逻辑运算符or会分别判断左右两侧表达式的布尔值:
- 左侧是
genre == 'Social Networking',结果为布尔值(True或False) - 右侧是字符串
'Games',在布尔语境下,非空字符串永远被视为True
所以不管genre的值是什么,右侧的'Games'始终为True,整个or表达式的结果永远是True。这会导致循环里所有行的rating都被添加到games_social_ratings列表中,计算出的平均值是所有App的评分均值,而非仅社交网络类和游戏类的。
正确写法的逻辑
再看正确的代码:
if genre == 'Social Networking' or genre == 'Games':
这里or的两侧都是完整的比较表达式:
- 左侧判断
genre是否等于'Social Networking' - 右侧判断
genre是否等于'Games'
只有当genre满足其中任意一个条件时,整个表达式才为True,此时对应的rating才会被加入列表。这样计算出的平均值才是目标类别App的评分均值。
补充:完整代码中的语法错误
你提供的完整代码里写了:
if genre == 'Social Networking' or == 'Games':
这是语法错误,== 'Games'前面缺少了比较对象genre,Python解释器会直接报错,无法运行。
内容的提问来源于stack exchange,提问作者Maestro
相关产品推荐
相关产品推荐

