先にカレンダー作成をしましたが、来年はオリンピックの年でまた閏年でもあります。
閏年とは、
・西暦が4で割り切れる年はうるう年
・ただし、4で割り切れても100の倍数で、かつ400で割り切れない年はうるう年ではない
というものです。
よって、2100年、2200年、2300年などは閏年ではありません。
さてこのルールをどうコーディングすればよいか考えてみましょう。
coding前の準備
・input()分は文字列なので、計算するときは整数に変換(int関数)必要。
・4の倍数かどうか、b= a % 4
・100の倍数かどうか、c= a % 100
・400の倍数かどうか、d= a % 400
この条件で組んでみます。
① 閏年計算
まず準備通りのメソッドで作ります。 初心者丸出しですが、上手く動いているようです。
趣味ですから、うまく動けばいいのです。
————————————————-
while True:
a=input(“What year to check as leap year? “)
a=int(a)
b=a % 4 #閏年の必要条件
c=a % 100 #100割れて、
d=a % 400 #かつ、400で割れなければ平年
if b == 0 : #4の倍数なら
if c == 0: #100の倍数なら
if d != 0 : #400の倍数でないなら
print(“Not Leap Year”)
else:
print(“Leap Year”)
else:
print(“Leap Year”)
else:
print(“Not Leap Year”)
print() #行下げ用
———————————————-
これをrunすると
What year to check as leap year? 2020 #一回目は閏年
Leap Year
What year to check as leap year? 2200 #二回目は平年
Not Leap Year
このような結果が得られました。
次も簡単閏年を調べる方法です。
② 簡単なチェック方
西暦を入れると、その年の2月のカレンダーが表示されるので、
その月に29日が有ればうるう年です。 2020年はオリンピック
が有りますからうるう年ですね。
import calendar
year=input(“欲しいカレンダーの年、月入れて下さい。 “)
year=int(year)
print(calendar.month(year, 2))
February 2020
Mo Tu We Th Fr Sa Su
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29
③ 或る期間に閏年が何回あるかのcode
import calendar
while True:
start_year=input(“Enter the start year.”)
end_year=input(“Enter the end year.”)
start_year=int(start_year)
end_year=int(end_year)
for year in range(start_year, end_year):
# うるう年の判定
if(calendar.isleap(year) == True):
print(year, “年はうるう年です。”)
2019年~2050年の間に閏年が何回あるか?
9回だそうです。