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

【Python】日付の有効性を判定して翌日の日付を出力するプログラムの書き方

入力された日付が有効かどうかを判定し、有効な日付であれば翌日の日付を出力したい場合、Pythonでは「if」条件文を使って実装できます。月末やうるう年といった特殊なケースも条件分岐で適切に処理することがポイントです。

以下に具体的な実装例を示します。

サンプルコード

my_date = input("日付を入力してください : ")
dd,mm,yy = my_date.split('/')
dd=int(dd)
mm=int(mm)
yy=int(yy)
if(mm==1 or mm==3 or mm==5 or mm==7 or mm==8 or mm==10 or mm==12):
   max_val = 31
elif(mm==4 or mm==6 or mm==9 or mm==11):
   max_val = 30
elif(yy%4==0 and yy%100!=0 or yy%400==0):
   max_val = 29
else:
   max_val = 28
if(mm<1 or mm>12 or dd<1 or dd> max_val):
   print("無効な日付です")
elif(dd==max_val and mm!=12):
   dd=1
   mm=mm+1
   print("翌日の日付は : ",dd,mm,yy)
elif(dd==31 and mm==12):
   dd=1
   mm=1
   yy=yy+1
   print("翌日の日付は : ",dd,mm,yy)
else:
   dd=dd+1
   print("翌日の日付は : ",dd,mm,yy)

出力

日付を入力してください : 5/07/2021
翌日の日付は : 6 7 2021

コードの解説

  • 日付をユーザー入力として文字列で受け取ります。

  • 「/」記号を区切り文字として文字列を分割し、日・月・年に分けます。

  • 分割した値をそれぞれ整数型(int)に変換します。

  • 最初の「if」条件で月の値を判定し、その月の最大日数(31日または30日)を変数 max_val に設定します。

  • 次の条件では、うるう年かどうか(4で割り切れかつ100で割り切れない年、または400で割り切れる年)をチェックし、2月の日数を28日または29日に決定します。

  • 日付の妥当性チェックを行い、範囲外の値であれば「無効な日付です」と表示します。

  • 月末の場合は月を繰り上げ、12月31日の場合は年も繰り上げて、結果をコンソールに出力します。

補足:datetimeモジュールを使ったより簡単な方法

標準ライブラリの datetime モジュールを利用すると、上記のような複雑な条件分岐を書かずに、同じ処理を簡潔に実現できます。

from datetime import datetime, timedelta

date_str = "5/07/2021"
try:
   d = datetime.strptime(date_str, "%d/%m/%Y")
   next_day = d + timedelta(days=1)
   print("翌日の日付は :", next_day.day, next_day.month, next_day.year)
except ValueError:
   print("無効な日付です")

strptime() で文字列を日付オブジェクトに変換する際に自動的に妥当性が検証され、無効な日付には例外が発生するため、try-exceptでエラー処理が可能です。実務ではこちらの方法が推奨されます。

  1. Pythonで文字列がパングラムかどうかを判定するプログラムの作成方法

    本記事では、与えられた文字列がパングラムであるかどうかを判定するPythonプログラムの解法とアプローチについて詳しく解説します。 問題の概要 文字列入力が与えられたとき、その文字列がパングラムであるかどうかを判定するPythonプログラムを作成します。 パングラムとは? パングラムとは、英語のアルファベット26文字すべてを少なくとも1回ずつ含む文章や一連の単語のことです。有名な例として「The quick brown fox jumps over the lazy dog」があります。 解法のアプローチ この問題は、以下の手順で解くことができます。 アルファベット全体を表す基準となる文字列

  2. Pythonによる巡回冗長検査(CRC)の実装方法とサンプルコード

    巡回冗長検査(CRC)とは 巡回冗長検査(CRC:Cyclic Redundancy Check)は、デジタルデータ内の誤りを検出するために広く利用されている手法で、伝送エラーの検出に特に有効な技術として知られています。この手法の計算の中核を担っているのは「2進数の除算(バイナリ除算)」です。 CRCでは、一連の冗長ビットからなる「CRCビット(検査用ビット)」を使用します。これらのビットはデータ単位(データワード)の末尾に付加され、付加後のデータ単位全体が、あらかじめ決められた特定の2進数(除数)でちょうど割り切れるように構成されます。 受信側での誤り判定の流れ 受信側では、受信したデータ