[光-Hikari-のPython]02章-01 Pythonプログラムの基礎（演算と変数）

#[Python]02章-01 演算と変数
いよいよ、Pythonプログラムを本格的に書いていきたいと思います。
基礎的なPythonの文法の説明が多く、最初は退屈に感じてしまう可能性もあるかもしれません。

適宜、Pythonを使ったグラフィック描画などを用いながら、遊び的要素も取り入れて、飽きないように説明していくことを心がけていきたいと思います。

Pythonでいろいろとやってみたいことはあるかもしれませんが、やはりプログラムの文法の概要説明なしにプログラムを書くのは難しいです。まずは基礎から徹底していきましょう。

さて、文法の基礎となるのが、**変数**となります。変数はPython言語だけでなく、Java、C言語など、ほかのどの言語でも登場するので、しっかりと理解をしてください。

## いろいろな演算子
1章の時に説明しましたが、入力した数値同士を足し算することができました。
Pythonでは数値に対して様々な演算子があります。この後もいろいろな演算子が登場しますが、以下は**算術演算子**と言います。

|演算子       |意味 | 書き方例|
|:-----------------|:------------------|:------------------|
| +            |            足し算（加算） | 11 + 3|
| -           |            引き算（減算） |11 -3 |
| *             |         掛け算（乗算） | 11 * 3 |
| /               |        割り算（除算） | 11 / 3 |
| //             |  割り算（除算/商のみ） | 11 // 3      |
| %          |   割り算（除算/剰余のみ） |   11 % 3 |
| **          |   累乗（べき乗） | 11 ** 3 （11<sup>3</sup>） |

実際に動作を確認してみましょう。今回は**Pythonコンソール**を実行していきます。
PyCharmを立ち上げたら、[01-03]で説明した通り、以下の手順でコンソールを立ち上げます。
![IMG.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/602679/5cc2c7d5-1423-6f4f-696c-16e1e0d60f06.png)


実際にPythonコンソール上に計算式を入力して、動作を確認してみてください。自分の好きな数値で試しても構いません。
以下のような結果になったかと思います。

```.py
>>> 11 + 3
14
>>> 11 - 3
8
>>> 11 * 3
33
>>> 11 / 3
3.6666666666666665
>>> 11 // 3
3
>>> 11 % 3
2
>>> 11 ** 3
1331
```
###除算について
どの演算も使われますが、プログラミングの世界では**//**（除算 商のみ）と**%**（剰余）はよく使われます。
例えば、時間の計算で、「秒」から「何分何秒」かを求めるといったことはよくあります。
3327秒は何分何秒かを計算するときには、

```.py
>>> 3327 // 60
55
>>> 3327 % 60
27
```
と計算すると、55分27秒といった具合に求めることができます。

##算術演算子の計算順序
上記では2つの数値の演算を行っていきましたが、演算は3つ以上の数値の計算も可能です。
例えば、以下の数式

```
10 + 2 * 3
```
を入力して計算すると、**16**と出力されます。これについては、今まで机上で行ってきた計算順序を同じルールとなります。

## 数値の種類
数値については、主に2つに分けられます。詳細については2章の最後に取り上げますが、数値には以下の種類の型があります。

- 整数<br>
　　例）10,  -7,  321 など
- 浮動小数点数（実数）<br>
　　例）3.14,  -2.718,  6.02×10<sup>23</sup> など

##変数<font color=red>【重要】</font>
プログラミングを学ぶ上で、**変数**という概念を必ず理解する必要があります。
例えば以下のPythonプログラム、

```.py
x = 25
```

において考えてみます。
数学では、**xは25である（xは25と等しい）**という意味になります。
しかし、プログラミングでは上記は、**xに25という数値を代入する（もしくは割り当てる）**という意味になります。難しい言葉を使うと、=(イコール)は**代入演算子**と言います。

また、プログラミングの入門書等で、以下の<font color="#005eb8">（図1）</font>のように、**xという名前の付いた箱に25を入れる**といった説明をすることが多いようですが、ここでは**25という値にxというタグをつける**<font color="#005eb8">（図2）</font>といった覚え方で覚えてください。

<img width="348" alt="1.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/602679/b0bf69cd-c5d1-8430-1238-a26ff4896526.png">

そのほうが後ほど、後述するオブジェクト指向プログラミングの説明をする際に理解がすんなりいくので、このイメージで覚えてください。
ただし、説明していくうえで便宜上、代入という表現で説明していきます。（正確には代入ではないですが）

<font color="#fe5000;">※</font>CやJava言語などを経験された方へ
上記例で、

```.py
x = 25
```
とxに代入をしています。Pythonから始めた方は何も疑問は持たないですが、CやJavaなどのプログラム言語を経験された方は「変数の宣言はしないのか？」という疑問を持たれているかもしれません。例えばJavaでは

```.java
int x;
x = 25
```
というように、「今からこのプログラムで使用するxはint型（整数型）です」と宣言をしないとエラーとなります。しかし、Pythonではそういった宣言は不要となります。値を代入すると、xが勝手に整数型であると定義するようになります。
その代わり、型の変換を自動で行うためその分の処理に時間がかかり、処理速度は他の言語と比較すると劣る部分もあります。

##変数を用いてプログラミングを行う
では実際に変数を用いてPythonプログラムを書いていきましょう。
**Pythonコンソール**から以下のプログラムを入力してみてください。

```.py
>>> num1 = 20
>>> num2 = 30
```
そうすると、実行結果は何も表示されませんが、実際には値は代入されています。（値にnum1とnum2それぞれタグがつけられています）

次に以下を入力すると「20」「30」という値が表示されると思います。

```.py
>>> num1
20
>>> num2
30
```

また、変数を用いて加減乗除を行います。以下のように入力して計算結果を確認できます。

```.py
>>> num1 + num2
50
>>> num1 - num2
-10
>>> num1 * num2
600
>>> num1 / num2
0.6666666666666666
```
なお、変数名は今回はnum1, num2という名前を使用しましたが、実際には自分で作成した名前でも問題ありません。
（**予約語**と言っていくつか使用できない変数名もあります。詳細は調べてみてください。）

##代入演算子について
**Pythonコンソール**から以下のコードを入力してみてください。

```.py
>>> num = 10
>>> num
10
```

先ほど説明した通り、これはnumという変数に10を代入していることになります。それを表示して10という数値を出力させています。

では、次に以下のコードを入力してみてください。

```.py
>>> num = num + 1
```

その状態で、numの内容を表示してください。すると以下の表示になると思います。

```.py
>>> num
11
```

まず、num = num + 1という式ですが、数学的に考えると成り立っていない等式となります。
ただし、Pythonプログラムの世界では「等しい」ではなく、num+1を計算した結果にnumというラベルを付けている状態です。以下のように考えるとわかりやすいでしょう。

**num ← num + 1**
（numに1を足した結果をnumに代入する）

さらに、この表示は以下のようにしても計算されます。コードを入力してみてください。

```.py
>>> num += 1
```

その状態で、numの内容を表示してください。すると以下の表示になると思います。

```.py
>>> num
12
```

**num += 1**は**num = num + 1**と同じ計算をしたことになります。
今は加算で説明しましたが、減算や掛け算、割り算でも同じことができますので試してみてください。

```.py
>>> num -= 3
>>> num
9
```
これは**num = num - 3**を計算したのと同じことになります。

このように、

**変数名 = 変数名 演算子 値**や**変数名 演算子= 値**と記載したものを**代入演算子**と言います。

後述する、**制御構文（ループ文など）で必ず出てくる**ものとなります。ぜひ押さえてください。

##最後に
今回は、基礎的な演算や変数の取り扱いについて学びました。
演算子については、**算術演算子**と**代入演算子**を紹介しました。
**代入演算子**は後述する制御構文などにもよく登場するものとなりますので、しっかり身に着けてください。

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