2 回答
TA贡献1842条经验 获得超21个赞
触发“reach here 1”语句的原因是第一个 if 条件被评估为 true。
由于您没有括号/“和”语句分组,如果所有三个和语句都为真或一个“或”语句为真,则第一个“如果”语句将被评估为真并且“到达此处 1”将是打印。
在这种情况下,一个“或”语句为真。Python 正在查看行
if m > 1 and type1 == 'b' and type2 == 'y' or 'z'
并说,“好吧,m>1,检查。type1 不 == b,所以不,这些 AND 语句是假的。然后,它移动到 OR 语句并说‘或 Z’是真的。
在 python 中,任何非空字符串值都为真。因此,'z' 的计算结果为 TRUE 并且满足 OR 条件 - 感谢@juanpa.arrivillaga 进行了此更正。有关详细信息,请参阅此页面:python 中字符串的真值
TA贡献1880条经验 获得超4个赞
对于语句,type2 == 'y' or 'z'这不会检查 type2 是“y”还是“z”。相反,您应该使用in将值作为列表的运算符
In [19]: m = 1
...: type1 = 'a'
...: type2 = 'x'
...:
...: if m > 1 and type1 == 'b' and type2 in ["x","z"]:
...: print('reach here 1')
...: elif type1 == 'a' and type2 == 'x':
...: print('reach here 2')
...:
reach here 2
添加回答
举报