教えて!gooにおける不適切な投稿への対応について

Pythonでプログラミング


プログラミング初心者です。

Pythonで西暦年を入力して和暦を出力するプログラムを書いてます。

x=“1978”
if x<=1987:print(“昭和”+x-1926)
elif 1988<=x<=2018:print(“平成”+x-1987)
else:print(“令和”+x-2018)

しかしこれでは上手く行きません。何故でしょうか?
詳しく教えてくれると嬉しいです。

gooドクター

A 回答 (5件)

平成元年の初日は 1989-01-08 ですので


誤: x-1987 → 正: 1+(x-1989)
誤: x<=1987 → 正: x<1989
1989年を "昭和64年/平成元年" と表記するなら更なる配慮が必要です。

昭和元年の初日は 1926-12-25 ですので
x<1989 を一律に昭和表記するのは危険
事前に x<1926 を別に表記する配慮が必要
大化元年から始まる変換表を用意できれば更に良いでしょう。

"令和"+x-2018
は、文字列+数値が出来ないことと、
"+x" してから "-2018" する計算順序が問題
変更案1) “令和” + str(1+x-2019)
変更案2) "令和%d" % (1+x-2019)
変更案3) "令和{0}".format(1+x-2019)
    • good
    • 0

pythonはわりと型に厳格で、文字列と数字を比較したり


文字列と数値を足したり引いたりはできません。

javascriptとかはこのへんゆるゆるですけどね・・・・
    • good
    • 0

x = 1978


if x <= 1987: print("昭和{0}".format(x-1926))
elif 1988 <= x <=2018: print("平成{0}".format(x-1987))
else: print("令和{0}".format(x-2018))
    • good
    • 0

数値と文字列の区別を付けましょう。

混ぜて演算は出来ません。

数値の足し算と、文字列の足し算の違いを知りましょう。
    • good
    • 0

色々間違えていますが、


少なくとも x が文字列なのか数値なのかは統一しないと動かない。
    • good
    • 1

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

gooドクター

このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング