どうも恵方巻きガチ勢です。
今年も恵方を向いて食べました。
今年の恵方は西南西(北から反時計回りに95°の向き)です。
今回はPythonを使って任意の年の恵方を算出するプログラムを書いていこうと思います。
1.恵方の決め方
そもそも恵方はどうゆう基準で決められるのでしょうか?
恵方はその年の十干(じっかん)という
甲(きのえ)・乙(きのと)・丙(ひのえ)・丁(ひのと)・戊(つちのえ)・己(つちのと)・庚(かのえ)・辛(かのと)・壬(みずのえ)・癸(みずのと)
の10個が干支のように毎年変わっていくものにいよって定められています。
十干と恵方の対応表はこんな感じです
甲・己 | 乙・庚 | 丙・辛・戊・癸 | 丁・壬 |
---|---|---|---|
東北東 | 西南西 | 南南東 | 北北西 |
そして十干は毎年変わり、10年周期で繰り返されるので西暦と十干の対応表はこんな感じ
西暦の一桁目が | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
---|---|---|---|---|---|---|---|---|---|---|
十干 | 庚 | 辛 | 壬 | 癸 | 甲 | 乙 | 丙 | 丁 | 戊 | 己 |
つまり西暦と恵方の対応表はこうなります。
西暦の一桁目が | 4・9 | 0・5 | 1・3・6・8 | 2・7 |
---|---|---|---|---|
恵方 | 東北東 | 西南西 | 南南東 | 北北西 |
これを元にコードを書いて行きましょう。
2.コード
まずはじめに恵方を知りたい西暦を入力してもらいます
print("What year is it now? :")
year=input()
しかしこれを実行すると
What year is it now? :
2025
<class 'str'>
となり要らない部分に改行が入ったり、変数yearの型str型になったりしているので、まずはそこを改善していきます。
Pythonのprint関数はデフォルトで末尾に改行が入るのでこれを無くしましょう。
引数endに任意の文字列を指定することでこれは改善できます。今回は末尾に来てほしい文字列はないので
print("What year is it now? :",end="")
これでOK。
次に変数yearの型の問題ですがこれはint関数を使って簡単にint型に変更できます。
year=int(input())
改善したコード
print("What year is it now? :",end="")
year=int(input())
を実行すると
What year is it now? :2025
<class 'int'>
いいですね。
次に変数yearから恵方を判定していきます。
西暦の一桁目が | 4・9 | 0・5 | 1・3・6・8 | 2・7 |
---|---|---|---|---|
恵方 | 東北東 | 西南西 | 南南東 | 北北西 |
この表から分かるように
year≡4(mod 5)なら東北東
year≡0(mod 5)なら西南西
year≡2(mod 5)なら北北西
それ以外なら南南東
となりますね。
これを元にコードを書くと
if year%5==4:
print("東北東です")
elif year%5==0:
print("西南西です")
elif year%5==2:
print("北北西です")
else:
print("南南東です")
これを追加した完成版のコードが
print("What year is it now? :",end="")
year=int(input())
print("{}年の恵方は".format(year),end="")
if year%5==4:
print("東北東です")
elif year%5==0:
print("西南西です")
elif year%5==2:
print("北北西です")
else:
print("南南東です")
これです。早速実行してみましょう。
結果
What year is it now? :2025
2025年の恵方は西南西です