Pythonの基礎学習でよく出題される課題のひとつが、
**「西暦を入力して、その年の干支(十二支)を表示するプログラム」**です。
この記事では、
%(剰余)演算子の考え方をまとめて解説します。
今回のPython課題は、以下の条件を満たす必要があります。
input() で入力するyear を使用%(剰余)演算子 を使って干支を判定print() で結果を表示する干支(十二支)は以下の12種類です。
| 番号 | 干支 |
|---|---|
| 0 | 子 |
| 1 | 丑 |
| 2 | 寅 |
| 3 | 卯 |
| 4 | 辰 |
| 5 | 巳 |
| 6 | 午 |
| 7 | 未 |
| 8 | 申 |
| 9 | 酉 |
| 10 | 戌 |
| 11 | 亥 |
Pythonではリストのインデックスが0から始まるため、この並びが重要になります。
以下が、課題条件をすべて満たした完成コードです。
# 十二支のリスト
eto = ['子', '丑', '寅', '卯', '辰', '巳', '午', '未', '申', '酉', '戌', '亥']
# 西暦を入力
year = int(input('西暦を入力してください:'))
# 十二支を計算
index = year % 12
# 結果を表示
print(eto[index])
eto = ['子', '丑', '寅', '卯', '辰', '巳', '午', '未', '申', '酉', '戌', '亥']
リストを使うことで、
番号(インデックス)=干支
という対応が簡単にできます。
year = int(input('西暦を入力してください:'))
input() は文字列として受け取るため、int() を使って数値に変換しています。
index = year % 12
print(eto[index])
計算した番号を使って、
対応する干支を表示します。
西暦を入力してください:2024
辰
year % 12 がエラーになる% 12 を使えば干支判定は一瞬学校課題・レポート提出・Python練習用として、そのまま使える内容です。
干支(十二支)は 12年で1周 する仕組みだからです。
西暦を12で割った余りを使うことで、その年がどの干支に当たるかを判定できます。
この課題では
「余りを使って判定する」ことが目的になっているためです。
index = year % 12
と書くことで、
というPythonらしい書き方になります。
Pythonのリストは 0番目から数える 仕様です。
eto = ['子', '丑', '寅', '卯', ...]
とすることで、
0 → 子1 → 丑2 → 寅と、自然に対応させることができます。
input() は 文字列(str) として値を受け取ります。
year = input('西暦を入力してください:')
このまま % を使うとエラーになります。
必ず int() で数値に変換しましょう。
動作としては可能ですが、
課題では減点されることが多い です。
この問題は
%演算子を使うことが狙いのため、
if文を大量に使う書き方は避けたほうが安全です。
Pythonの int 型が扱える範囲であれば、
基本的に制限はありません。
例:
理論上は計算できますが、
歴史的な干支の扱いとは一致しない ためおすすめしません。
このプログラムは
西暦(紀元後)専用 と考えてください。
いいえ、干支の判定には関係ありません。
閏年は2月の日数の問題であり、干支とは別物です。
print() を少し変更するだけで対応できます。
print(f'{year}年の干支は{eto[index]}です')
はい。
% 演算子すべて課題条件を満たしているため、
そのまま提出可能です。