请问这个结果为什么是yes呢?

or和and之间有优先级嘛,没有的话先从左到右看x or y得出来是x,再x and z得出来不应该是z吗?输出是no呀,请教一下大家,分不清了

img

and 优先级高于 or ,所以先执行 y and z 为 False,然后执行 x or False ,结果为Ture,所以输出是“yes”。

测试如下:

参考链接:


x=True
y=False
z=False

# https://www.zhihu.com/question/20152384
if x or y and z:
    print("yes")
else:
    print("no")


img

问题点: or和and之间有优先级?
结论 : and > or
代码运行结果: ‘yes’
分析如下

x = True
y = False
z = False

# 验证 or先 还是 and 先 ?  利用括号来控制一下运行顺序,括号里的会先运行

print((x or y and z) == x or (y and z))   # True 结果和原来一样

# 注意右边 先执行 x or y, 会导致结果和原来不一样
print((x or y and z) == (x or y) and z)   # False :结果和原来不一样