原題
輸入一年份,判斷該年份是否是閏年並輸出結果。(編程題)
注:凡符合下面兩個條件之一的年份是閏年。 (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"。
