0
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Pythonで学ぶアルゴリズム 第6弾:うるう年

Last updated at Posted at 2020-12-18

#Pythonで学ぶアルゴリズム< うるう年 >

はじめに

基本的なアルゴリズムをPythonで実装し,アルゴリズムの理解を深める.
その第6弾としてうるう年を扱う.

うるう年

<条件>
4で割り切れる年をうるう年という.
※ただし,100で割り切れて,400で割り切れない年はうるう年ではない.
例)
2019年 : 4で割り切れない⇒うるう年でない
2020年 : 4で割り切れる⇒うるう年? → 100で割り切ない⇒うるう年である
1900年 : 4で割り切れる⇒うるう年? → 100で割り切れて,400で割り切れない⇒うるう年でない
2000年 : 4で割り切れる⇒うるう年? → 100で割り切れて400で割り切れる⇒うるう年である

このように条件の注意(※)さえ,満たさなければ,単純に4で割り切れるものはうるう年ということである.これをpythonで実装してみた.
以下にコードと出力を示す.

コード
leap_year.py
"""
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を返すようにした.
以下にそのコードと出力を示す.

コード
leap_year_.py
"""
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で始めるアルゴリズム入門 伝統的なアルゴリズムで学ぶ定石と計算量
                         増井 敏克 著  翔泳社

0
3
5

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?