[光-Hikari-のPython]02章-03 Pythonプログラムの基礎（入出力）

#[Python]02章-03 入出力
この節では、画面への出力についての基礎的な説明と、キーボードからの入力について述べていきます。
ファイルへの出力や、ファイルからの入力については本章では扱わず、後述する予定です。

なお、今回はPython Consoleは用いず、PyCharmのエディタ上にプログラムを書いて実行していきたいと思います。

今回は最後に演習問題を用意していますので、取り組んでみてください。

##画面への出力
今回はプログラムをエディタに入力するために、フォルダと.pyファイルを作成します。
今回のファイルは<font color="00cccc">chap02</font>フォルダを作成し、その中に<font color="00cccc">02-03-01.py</font>というファイルを作成します。
作成方法は「01章-03」で説明しましたが、もう一度確認してみます。

まず、プロジェクトにある[Python]フォルダを右クリック→[New]→[Directory]を押下します。
<img width="478" alt="1.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/602679/683f151d-d3a7-6f4f-d69e-12c4bf68ea91.png">

そこで、<font color="00cccc">chap02</font>という名前でフォルダを作成します。

次に、作成された<font color="00cccc">chap02</font>フォルダで右クリックをして、
[chap02]→[Python File]を押下します。
<img width="496" alt="2.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/602679/2be8dbf4-fbdb-0ef2-a9b7-bf5d30c2f0c6.png">

そこで、<font color="00cccc">02-03-01.py</font>というファイルを作成します。
<img width="295" alt="3.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/602679/b690ff63-59c8-03c1-8253-aef994e5cd7f.png">

これで、PyCharmでプログラムを記載することができます。

まず、以下のコードを入力してください。

```02-03-01.py
print(123)
print('Hello!')
print('こんにちは！')
print("ようこそ、楽しいプログラミングの世界へ！")
```

そして実行してください。実行は以下の方法でできます。
<img width="279" alt="4.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/602679/1a35edc9-3620-ee54-5647-ccfbacfe6432.png">

><font color="#090" bgcolor="black">【実行結果】</font>
123
Hello!
こんにちは！
ようこそ、楽しいプログラミングの世界へ！

ここまであまり触れなかったですが、print関数により、()内のものを出力させることができます。
なお、数値であればそのまま入力で問題ないですが、文字列であれば「’」（シングルクオーテーション）または「"」（ダブルクオーテーション）で囲むようにします。

##エスケープシーケンス
文字列中にエスケープ文字を入れることで、改行できたり、タブを入れることもできます。
<font color="00cccc">chap02</font>フォルダ内に<font color="00cccc">02-03-02.py</font>というファイルを作成し、以下のプログラムを作成してください。
<font color="red">※「\」はキーボードの「¥」のところです。</font>
<font color="red">※「\n」は「¥n」ととなっている書籍もありますのでご注意ください。</font>

```02-03-02.py
print("ようこそ、\n楽しいプログラミングの世界へ！")
```

><font color="#090" bgcolor="black">【実行結果】</font>
ようこそ、
楽しいプログラミングの世界へ！

他にも以下のものがあります。（一例です）

| 文字 | 意味 |
|:-:|:-:|
| \\n  | 改行  |
| \¥  | ¥記号の表示  |
| \'  | シングルクオーテーションの表示  |
| \"  | ダブルクオーテーションの表示  |

今作った、<font color="00cccc">02-03-02.py</font>というファイルに以下のプログラムを追記してください。
※「¥」は「えん」と入力して変換してください。

```02-03-02.py
print('ようこそ、\n楽しいプログラミングの世界へ！')
print('\¥500になります')
print('This is Taro\'s pen.')
```
3行目の「Taro's」の個所はprint関数の()内の両端にあるシングルクオーテーションと区別をつけるために「\」をつけています。

##キーボードからの入力
前の節ではプログラムに変数を指定して、それに数値や文字列をプログラム上で指定して実行させてました。
ところがそのままだと、自由な数値や文字列を指定して実行ができず、またいちいちプログラムを書き直さなければなりません。

そこで、キーボードからの値の入力について説明します。

キーボードの入力を行うには以下のように指定します。

```
x = input('ここに何か文字列')
```

実際にプログラムを書いてみましょう。<font color="00cccc">02-03-03.py</font>というファイルを作成してそこに記載してください。

```02-03-03.py
x = input('数値を入力してください：')
print(x)
```
実行すると、入力を求められるので、自分の好きな数値を入力してください。
><font color="#090" bgcolor="black">【実行結果】</font>
数値を入力してください：<font color="00cccc">15</font>　　（←ここはキーボード入力）
15

次に、2つの変数x, yにそれぞれ数値を入力して加算することを考えます。
以下のプログラムを書いてください。<font color="#00cccc">02-03-04.py</font>というファイルを作成してそこに記載してください。

```02-03-04.py
x = input('変数xに数値を入力してください：')
y = input('変数yに数値を入力してください：')
print(x + y)
```
そして2つの数値を入力すると以下の結果になったと思います。

><font color="#090" bgcolor="black">【実行結果】</font>
変数xに数値を入力してください：<font color="00cccc">10</font>
変数yに数値を入力してください：<font color="00cccc">20</font>
1020

本来、入力した数値が足されるはずなのですが、入力したものが連結されています。
実は、**キーボードからの入力はすべて文字列となるのです。**したがって、以下のように**int関数**で文字列を数値に変更します。（02章-02で説明）

```02-03-04.py
x = input('変数xに数値を入力してください：')
y = input('変数yに数値を入力してください：')
print(int(x) + int(y))
```

><font color="#090" bgcolor="black">【実行結果】</font>
変数xに数値を入力してください：<font color="00cccc">10</font>
変数yに数値を入力してください：<font color="00cccc">20</font>
30

また以下のように、入力した時点でint関数で文字列を数値にも変換できます。

```02-03-04.py
x = int(input('変数xに数値を入力してください：'))
y = int(input('変数yに数値を入力してください：'))
print(x + y)
```

><font color="#090" bgcolor="black">【実行結果】</font>
変数xに数値を入力してください：<font color="00cccc">10</font>
変数yに数値を入力してください：<font color="00cccc">20</font>
30

##入力と出力の組み合わせ
以下の問題を考えてみて、プログラムを書いてみましょう。

<font color="3333ff">
3つの整数変数x, y, zに数値を入力し、その3つの数の加算（和）の結果を出力するプログラムを作ってください。ただし、出力時に何が計算されたのか分かるように出力してください。例えばxに2, yに4, zに6と入力したとき、「2と4と6の和は12です。」と出力するようにしてください。
</font>

なお、和と積のそれぞれの変数はwaにしてください。
実行結果は以下の通りにしてください。
><font color="#090" bgcolor="black">【実行結果】</font>
変数x：<font color="00cccc">2</font>
変数y：<font color="00cccc">4</font>
変数z：<font color="00cccc">6</font>
2と4と6の和は12です。


まずはプログラムを考えてみてください。<font color="#00cccc">02-03-05.py</font>というファイルを作成してそこに記載してください。

```02-03-05.py
x = input('変数x：')
y = input('変数y：')
z = input('変数z：')

wa = int(x) + int(y) + int(z)

print(x+'と'+y+'と'+z+'の和は' +str(wa)+ 'です。')
```

ポイントを説明します。
まず、入力したx, y, zは文字列のため、それぞれ**int関数**で数値へ変換します。
それらの結果をwaに代入します。

このままprint関数内で連結すると、文字列と数値の連結になりエラーとなるので、**str関数**で変換してから結合します。

なお、フォーマットと言い、出力の際に以下のように表記もできます。

```02-03-05.py
x = input('変数x：')
y = input('変数y：')
z = input('変数z：')

wa = int(x) + int(y) + int(z)

print(f'{x}と{y}と{z}の和は{wa}です。')
```

##演習問題
演習問題を用意しました。ぜひ解いてみてください。なお、ファイル名は[ ]内に指定したものを使用して、<font color="00cccc">chap02</font>内に作成ください。使用する変数名は好きな変数名を指定してかまいません。
<font color="3333ff">
[02-03-p1.py]
【1】3つの整数変数x, y, zに数値を入力し、その3つの数の掛け算（積）の結果を出力するプログラムを作ってください。ただし、出力時に何が計算されたのか分かるように出力してください。例えばxに2, yに4, zに6と入力したとき、「2と4と6の積は48です。」と出力するようにしてください。
</font>
<font color="3333ff">
[02-03-p2.py]
【2】長方形の縦と横の長さを読み込んで、その長方形の面積を計算して出力するプログラムを作成してください。
</font>
<font color="3333ff">
[02-03-p3.py]
【3】円の半径を入力して、その円の面積を計算した結果を出力するプログラムを作成してください。（円周率は3.14を使用してください）
</font>
<font color="3333ff">
[02-03-p4.py]
【4】キーボードから時間を秒で入力して、以下例のように時分秒に分けるプログラムを作成してください。（ヒント：演算子//を使えば商が、%を使えば余りが計算できます。）

>時間を秒で入力してください：<font color="00cccc">5000</font>
5000秒は1時間23分20秒です。
</font>

##最後に
今日はエスケープシーケンスをはじめ、キーボードから入力する方法を学びました。
キーボードから入力すると、入力結果は文字列になるので、それをint関数で数値へ変換するのを忘れずに、また出力の際にはstr関数で文字列へ変換するのを忘れないようにしましょう。

###[【目次リンク】へ戻る](https://qiita.com/ko0821/items/379e8bd9e6ea01089419)