たとえば、2001年の場合を考えてみましょう
1
target_year % 400 == 0
この条件にはあてはまりません
2
target_year % 4 == 0
この条件にもあてはまりません
3
target_year % 100 == 0 and target_year % 400 == 0
この条件は、まず前半だけ考えましょう
target_year % 100 == 0
この条件にあてはまりません
ということは、and なので、後半の条件を考えるまでもなく、あてはまりません
1, 2, 3 より、すべての条件にあてはまらないので
なにも出力されません
閏年の判定のしかた
閏年の条件が示されていないので、
ここでの解説は次の Wikipedia の定義に従います
西暦年が4で割り切れる年は(原則として)閏年。
ただし、西暦年が100で割り切れる年は(原則として)平年。
ただし、西暦年が400で割り切れる年は必ず閏年。
この「ただし」を if として実装します
そして、条件に示されていない else を忘れないようにします
python
1def leap_year_judgment(target_year):
2 """
3 閏年かどうかを判定する
4 西暦年が4で割り切れる年は(原則として)閏年。
5 ただし、西暦年が100で割り切れる年は(原則として)平年。
6 ただし、西暦年が400で割り切れる年は必ず閏年。
7 https://ja.wikipedia.org/wiki/%E9%96%8F%E5%B9%B4
8 """
9 if target_year % 400 == 0:
10 print(target_year,"は閏年です")
11 elif target_year % 100 == 0:
12 print(target_year,"は閏年ではありません")
13 elif target_year % 4 == 0:
14 print(target_year,"は閏年です")
15 else:
16 print(target_year,"は閏年ではありません")
17
18
19leap_year_judgment(2000)
20leap_year_judgment(2001)
21leap_year_judgment(2004)
22leap_year_judgment(2100)
実行結果:
console
1$ python test.py
22000 は閏年です
32001 は閏年ではありません
42004 は閏年です
52100 は閏年ではありません
また、論理演算はベン図を書くと理解が深まるかもしれません