Pythonの練習 入力された西暦を和暦に変換する

#目的
Pythonの練習として作成しました。
整数値で入力された西暦を、和暦に変換します。
##仕様
* 和暦の対象は明治、大正、昭和、平成、令和です。
* 明治元年は1868年としています。
* 明治より古い場合、例外処理としています。

##できること
このような応答になります。

```
西暦を入力してください。
2020
西暦2020年は令和2年です。
```

##使うもの
変数、代入、if elif else文、四則演算、文字入力、比較演算、論理演算を用いています。

#コード
```python:nengo.py
int_input = int(input("西暦を入力してください。\n"))

#明治
if(int_input >= 1868 and int_input <=1911):
	str_nengo = "明治"
	int_year = int_input - 1867
	if(int_year == 1):
		int_lastYear = int_input - 1864
		str_lastYear = "慶応"
		print("西暦", int_input , "年は", str_nengo, "元年（", str_lastYear, int_lastYear ,"年）です。\n",sep='')
	else:
		print("西暦", int_input , "年は", str_nengo, int_year, "年です。\n",sep='')

#大正
elif(int_input >=1912 and int_input <=1925):
	str_nengo = "大正"
	int_year = int_input - 1911
	if(int_year == 1):
		int_lastYear = int_input - 1867
		str_lastYear = "明治"
		print("西暦", int_input , "年は", str_nengo, "元年（", str_lastYear, int_lastYear ,"年）です。\n",sep='')
	else:
		print("西暦", int_input , "年は", str_nengo, int_year, "年です。\n",sep='')

#昭和
elif(int_input >=1926 and int_input <=1988):
	str_nengo = "昭和"
	int_year = int_input - 1925
	if(int_year == 1):
		int_lastYear = int_input - 1911
		str_lastYear = "大正"
		print("西暦", int_input , "年は", str_nengo, "元年（", str_lastYear, int_lastYear ,"年）です。\n",sep='')
	else:
		print("西暦", int_input , "年は", str_nengo, int_year, "年です。\n",sep='')

#平成
elif(int_input >=1989 and int_input <=2018):
	str_nengo = "平成"
	int_year = int_input - 1988
	if(int_year == 1):
		int_lastYear = int_input - 1925
		str_lastYear = "昭和"
		print("西暦", int_input , "年は", str_nengo, "元年（", str_lastYear, int_lastYear ,"年）です。\n",sep='')
	else:
		print("西暦", int_input , "年は", str_nengo, int_year, "年です。\n",sep='')

#令和
elif(int_input >=2019):
	str_nengo = "令和"
	int_year = int_input - 2018
	if(int_year == 1):
		int_lastYear = int_input - 1988
		str_lastYear = "平成"
		print("西暦", int_input , "年は", str_nengo, "元年（", str_lastYear, int_lastYear ,"年）です。\n",sep='')
	else:
		print("西暦", int_input , "年は", str_nengo, int_year, "年です。\n",sep='')

#例外処理
else:
	# if(int_input < 1868):
	print("西暦", int_input , "年は、かなり古い時代です。\n",sep='')
```

##構造

###西暦の入力部分

```python:
int_input = int(input("西暦を入力してください。\n"))
```

`int_input` 入力された西暦を格納する変数。整数なので`int_`としています。 
`input()` 文字入力
`int(input())` 整数で入力するよう制限
`\n` 末尾で改行（改行しなくてもよいです。）


###入力された西暦が、明治時代だった場合の処理

```python:
#明治
if(int_input >= 1868 and int_input <=1911):
    str_nengo = "明治"
    int_year = int_input - 1867
```

`if():` if文。
`int_input >= 1868` 条件１。入力された西暦が1868年以降であれば。
`int_input <=1911` 条件２。入力された西暦が1911年以前であれば。
`and` 論理演算子。ふたつの条件が両方満たされたら明治。

`str_nengo` 年号を格納する変数。文字列なので`str_`としています。
`int_year`　和暦の年を格納する変数。
`int_input - 1867` 入力された西暦から1867を引くと、明治の年になります。


###明治1年だった場合の処理

```python:
    if(int_year == 1):
        int_lastYear = int_input - 1864
        str_lastYear = "慶応"
```

1年だった場合、前の元号の最終年でもあります。

`西暦1868年は明治元年（慶応4年）です。` という表記をしたいです。

なので、もうひとつの条件を追加。
最初のif文の中にネストしたif文を作ります。

`if(int_year == 1):` 和暦の年`int_year`が1だったら。
`int_lastYear` さらに前の元号の最終年。ここでは慶応の最終年（4）を求めています。
`str_lastYear ` 前の元号。

これで出力をする準備ができました。

###元年だった場合の出力

```python:
print("西暦", int_input , "年は", str_nengo, "元年（", str_lastYear, int_lastYear ,"年）です。\n",sep='')
```

`print()` 出力をする関数。`,`を使って複数の要素を連結して出力しています。
`"西暦"`　ここは文字列。文字列をprintする場合はコーテーションで囲む。
`int_input` ここは変数。変数をprintする場合は、そのまま。
`"元年（", str_lastYear, int_lastYear ,"年）` 前の元号と最終年です。
`\n` 改行。
`sep=''` セパレートの指定。デフォルトでは要素の間にスペースが入るので少し間延びして見えます。`sep`を空欄で指定すると、スペースなしで出力されます。


###通常の出力（元年じゃない場合）

```python:
print("西暦", int_input , "年は", str_nengo, int_year, "年です。\n",sep='')
```

「元年」部分の処理だけ削除しています。

これで、明治時代は完了です。
つぎは大正、昭和、平成、令和と続きます。

基本的には明治と同様の構造になりますが、
明治は`if文`で、
大正、昭和、平成、令和は`elif`になっています。

`if`に対して、`elif`では二つ目以降の条件を設定できます。

###令和の場合

```python:
#令和
elif(int_input >=2019):
```

最終年は確定されないので、条件が一つになります。


###例外処理

```python:
else:
    # if(int_input < 1868):
    print("西暦", int_input , "年は、かなり古い時代です。\n",sep='')
```

これまでの`if`や`elif`に対して `else`としています。
`else`は、ここまでに書かれた条件以外の場合の処理です。

具体的には、西暦が1868年より古かった場合になります。

今回は明治、大正、昭和、平成、令和を対象としているので
数字でいうと1868以降が対象、それ以前はかなり古い時代です、と出力しています。


#終わり

以上になります。

基本的な記述を使った例として作成しました。
お読みいただき、ありがとうございました。


#参考にさせて頂いた情報

##Qiita
[Python基礎講座(8 分岐)](https://qiita.com/Usek/items/e63fd930a31c6faad856)

##note.nkmk.me
[Pythonのprint関数で文字列、数値および変数の値を出力](https://note.nkmk.me/python-print-basic/)