#Pythonで学ぶアルゴリズム< うるう年 >
はじめに
基本的なアルゴリズムをPythonで実装し,アルゴリズムの理解を深める.
その第6弾としてうるう年を扱う.
うるう年
<条件>
4で割り切れる年をうるう年という.
※ただし,100で割り切れて,400で割り切れない年はうるう年ではない.
例)
2019年 : 4で割り切れない⇒うるう年でない
2020年 : 4で割り切れる⇒うるう年? → 100で割り切ない⇒うるう年である
1900年 : 4で割り切れる⇒うるう年? → 100で割り切れて,400で割り切れない⇒うるう年でない
2000年 : 4で割り切れる⇒うるう年? → 100で割り切れて400で割り切れる⇒うるう年である
このように条件の注意(※)さえ,満たさなければ,単純に4で割り切れるものはうるう年ということである.これをpythonで実装してみた.
以下にコードと出力を示す.
コード
"""
2020/12/18
@Yuya Shimizu
うるう年
・4で割り切れる年
ただし,100で割り切れて400で割り切れない年はうるう年でない
"""
def leap_year(year):
if year%100 == 0 and year%400 != 0:
print(str(year) + "年はうるう年でない.")
else:
if year%4 == 0:
print(str(year) + "年はうるう年である.")
else:
print(str(year) + "年はうるう年でない.")
year = int(input("うるう年判定\n>>"))
leap_year(year)
出力1
うるう年判定
>>2000
2000年はうるう年である.
出力2
うるう年判定
>>1900
1900年はうるう年でない.
ユーザ入力により判定するものとした.
コードはいたってシンプルで,注意したところは,より特殊な条件をはじめに持ってくることである.
改編版
@shiracamusのコメントを参考に上記のプログラムを改編した.
具体的には,関数内のprintを省きTrue, Falseを返すようにした.
以下にそのコードと出力を示す.
コード
"""
2020/12/18
@Yuya Shimizu
うるう年
・4で割り切れる年
ただし,100で割り切れて400で割り切れない年はうるう年でない
改編版
@shiracamusの提案を参考に,True, Falseを返すプログラムにした
"""
def leap_year(year):
if year%100 == 0 and year%400 != 0:
return False
else:
if year%4 == 0:
return True
else:
return False
year = int(input("うるう年判定\n>>"))
print(leap_year(year))
出力
うるう年判定
>>2020
True
よりよいものができた.
感想
今までに2,3回はうるう年のコードを書いたことはあったが,アルゴリズムを通して少し頭の中を整理できたおかげか,割とシンプルにかけたのではないかと思う.
参考文献
Pythonで始めるアルゴリズム入門 伝統的なアルゴリズムで学ぶ定石と計算量
増井 敏克 著 翔泳社