您的位置:首页 > 编程语言 > Python开发

python的and和or优先级

2018-03-28 11:40 232 查看

原题

输入一年份,判断该年份是否是闰年并输出结果。(编程题)

注:凡符合下面两个条件之一的年份是闰年。 (1) 能被4整除但不能被100整除。 (2) 能被400整除。

答案:

def get_year():

year = int(input(“请输入年份:”))

if year % 4 == 0 and year % 100 != 0 or year % 400 == 0:

print(“%s 年是闰年” % year)

else:

print(“%s 年不是闰年” % year)

get_year()

=============================================

疑问

这里if year % 4 == 0 and year % 100 != 0 or year % 400 == 0:我自己是认为不能写成一条语句,不能执行,于是了解了一下and与or的关系

答疑

对python而言

其一, 在不加括号时候, and优先级大于or

其二, x or y 的值只可能是x或y. x为真就是x, x为假就是y

第三, x and y 的值只可能是x或y. x为真就是y, x为假就是x

例一:

对于, 1 or 5 and 4: 先算5 and 4, 5为真, 值为4. 再算1 or 4, 1 为真,值为1

对于, (1 or 5) and 4: 先算1 or 5, 1为真, 值为1. 再算1 and 4, 1为真,值为4

例二:

a = “heaven”

b = “hell”

c = True and a or b

print(c)

d = False and a or b

print(d)

输出:

heaven

hell

解析:

表达式从左往右运算,1和”heaven”做and的结果是”heaven”,再与”hell”做or的结果是”heaven”;0和”heaven”做and的结果是0,再与”hell”做or的结果是”hell”。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: