or和and之间有优先级嘛,没有的话先从左到右看x or y得出来是x,再x and z得出来不应该是z吗?输出是no呀,请教一下大家,分不清了
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")
问题点: 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 :结果和原来不一样