Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonでうるう年(閏年)を判定する方法をわかりやすく解説

うるう年(閏年)は基本的に4年ごとに訪れます。通常の年であれば「4で割り切れる年」がうるう年となりますが、世紀の年(1900年や2000年など100で割り切れる年)については、「400で割り切れる年」のみがうるう年とみなされます。そのため、2000年はうるう年ですが、1900年はうるう年ではありません。

このルールを踏まえると、Pythonでの判定ロジックは次の手順になります。

  1. 年が100で割り切れるかどうかをチェックする(世紀の年かどうかの判定)
  2. 世紀の年の場合は、400で割り切れればうるう年
  3. それ以外の年の場合は、4で割り切れればうるう年

サンプルコード

yr = int(input('enter year: '))
if yr % 100 == 0:  # 世紀の年の判定
    if yr % 400 == 0:
        print('{} is leap year'.format(yr))
    else:
        print('{} is not leap year'.format(yr))
else:
    if yr % 4 == 0:
        print('{} is leap year'.format(yr))
    else:
        print('{} is not leap year'.format(yr))

実行結果

enter year: 2012
2012 is leap year

enter year: 2018
2018 is not leap year

enter year: 2000
2000 is leap year

enter year: 1900
1900 is not leap year

標準ライブラリを使ったより簡単な方法

条件分岐を自分で書かなくても、Pythonの標準ライブラリ calendar モジュールに含まれる isleap() 関数を使えば、1行でうるう年を判定できます。

import calendar

print(calendar.isleap(2012))  # True
print(calendar.isleap(1900))  # False

isleap() 関数は、引数に渡した年がうるう年であれば True、そうでなければ False を返します。実務ではこちらの方法を使う方がシンプルで読みやすいコードになります。

  1. Pythonで文字列に特定の文字のみが含まれているかを確認する方法

    Pythonでは、文字列が特定の文字だけで構成されているかどうかを簡単にチェックできます。代表的な方法として、セット(set)を使う方法と正規表現(regex)を使う方法の2つがあります。それぞれ具体的なコード例とともに解説します。方法1:セット(set)を使った確認まず、許可したい文字の集合(セット)を宣言します。そして、検証したい文字列から作ったセットが、その許可セットの部分集合になっているかを確認します。例えば、文字列に「1」「2」「3」「4」のみが含まれているかをチェックしたい場合は、次のように書きます。allowed_chars = set(1234) validation_stri

  2. Pythonで文字列が英数字のみかどうかを判定する方法【isalnum()と正規表現】

    Pythonでは、文字列が英数字(アルファベットと数字)のみで構成されているかどうかを簡単に判定できます。主な方法は2つあります。文字列クラスに組み込まれている isalnum() メソッドを使う方法と、正規表現を使う方法です。 isalnum()メソッドを使う方法 Pythonの文字列クラスには isalnum() というメソッドが用意されています。このメソッドを文字列に対して呼び出すと、文字列が英数字のみで構成されている場合に True を、記号などが含まれる場合には False を返します。 >>> 123abc.isalnum() True >>>