2
2

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.

誕生日の曜日を確認してみる

Posted at

Python学習の一環で、自分の生まれた曜日を確認するプログラムを作成してみました。
Zëllerの公式を使うと、1582年10月15日以降の日付から曜日を計算することができます。

整数(int)として年をyear、月をmonth、日をdayとした時、曜日(weekday)は
weekday = (year + (year // 4) - (year // 100) + (year // 400) + ((13*month+8) // 5) + day) % 7 という式で計算できます。
曜日は整数として0が日曜、1が月曜、...、6が土曜となります。
但し、1月と2月はそれぞれ前の年の13月、14月として計算する必要があり, 例えば、2021年1月というのは上の計算式では、2020年13月として計算しなければなりません。

流れとしまして、生年月日入力後、Zëllerの公式を使い、出力するという簡単な流れになります。
使用環境としては、Google Colaboratoryになります。

早速、生年月日の入力欄を設けましょう。int型で表示します。

year = int(input('年> '))
month = int(input('月> '))
day = int(input('日> '))
birthday = str(year)+''+str(month)+''+str(day)+''

数値型で入った数字を文字列型に変換し、。1月と2月は、前年のそれぞれ13月・14月として扱います。そして、その場合、前年の年をベースとした13月、14月になり、計算式を入れる。


if month == 1 or month == 2 :
    year = year - 1
    month = month + 12
wkday = (year + (year // 4) - (year // 100) + \
  (year // 400) + ((13*month+8) // 5) + day) % 7

曜日は、整数として0が日曜、1が月曜、...、6が土曜となるよう設定します。

if wkday == 0 :
    wkstr = '日曜日'
elif wkday == 1 :
    wkstr = '月曜日'
elif wkday == 2 :
    wkstr = '火曜日'
elif wkday == 3 :
    wkstr = '水曜日'
elif wkday == 4 :
    wkstr = '木曜日'
elif wkday == 5 :
    wkstr = '金曜日'
elif wkday == 6 :
    wkstr = '土曜日'
print(birthday+''+wkstr+'です。')

まとめコード

year = int(input('年> '))
month = int(input('月> '))
day = int(input('日> '))
birthday = str(year)+''+str(month)+''+str(day)+''
if month == 1 or month == 2 :
    year = year - 1
    month = month + 12
wkday = (year + (year // 4) - (year // 100) + \
  (year // 400) + ((13*month+8) // 5) + day) % 7
if wkday == 0 :
    wkstr = '日曜日'
elif wkday == 1 :
    wkstr = '月曜日'
elif wkday == 2 :
    wkstr = '火曜日'
elif wkday == 3 :
    wkstr = '水曜日'
elif wkday == 4 :
    wkstr = '木曜日'
elif wkday == 5 :
    wkstr = '金曜日'
elif wkday == 6 :
    wkstr = '土曜日'
print(birthday+''+wkstr+'です。')

出力結果
例えば、2021年3月31日で試すと、水曜日と表示されています。検証してみましょう。

年> 2021
月> 3
日> 31
2021年3月31日は水曜日です。

webから確認したカレンダーを見ると、確かに水曜日になっています。
image.png

今回は、誕生日を曜日確認してみるという題目で行いましたが、特に誕生日に限らず、未来の曜日も確認出来ますので、予定計画を作る際に活用できそうです。

2
2
0

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
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?