【Python】数と演算【入門第11回】

84, 2019-08-04

目次

数と演算

こんにちは、narupoです。

今回は前回に引き続き、Pythonの数、特に数の演算について見ていきます。

具体的には、

  • +

  • -

  • *

  • /

  • %

  • //

  • **

  • 演算の優先順位

  • 演算と変数

について見ていきたいと思います。

演算(えんざん)とは?

演算(えんざん)という言葉はあまり聞きなれない言葉だと思います。
これの意味は「計算を行うこと」という意味です。

たとえば、

:::python
1 + 1

という式は足し算という演算をしていると言えます。

なぜこんな聞きなれない言葉を使うのか?

通ぶりたいのか? 見栄か?

プログラミングではこの演算という言葉はけっこう頻繁に使われています。
たとえば比較演算とかAND演算とか、これでもかというほど使われています。
なので、慣れてしまいましょう。

各演算の概観

まず、各演算の概観を見てみたいと思います。

足し算(加算)。

:::python
1 + 1

引き算(減算)。

:::python
1 - 1

掛け算(乗算)。

:::python
2 * 2

割り算(除算)。

:::python
4 / 2


割り算の余り(剰余算)。

:::python
3 % 2

割り算の切り捨て。

:::python
3 // 2

べき乗。

:::python
2 ** 8

それぞれの演算をひとつひとつ見ていきましょう。

足し算(加算)

Pythonで足し算をするには↓のようにします。

:::python
1 + 1

足し算の結果はprintで出力できます。

:::python
print(1 + 1)

↑のコードを実行すると↓のような結果になります。

2

引き算(減算)

引き算も同じようにします。

:::python
1 - 1

引き算の結果をprintで出力してみましょう。

:::python
print(1 - 1)

↑のコードを実行すると↓のような結果になります。

0

掛け算(乗算)

Pythonで掛け算を行うには*(アスタリスク)を使います。
これは×という意味になります。

:::python
2 * 2

掛け算の結果もprintで出力できます。

:::python
print(2 * 2)

↑のコードを実行すると↓のような結果になります。

4

割り算(除算)

Pythonで割り算を行うには/(スラッシュ)を使います。
これは÷という意味になります。

:::python
4 / 2

割り算の結果をprintで出力してみましょう。

:::python
print(4 / 2)

↑のコードを実行すると↓のような結果になります。

2.0

結果が実数になっていることに注目してください。
このようにPythonでは割り算の結果はfloatで返ってきます。

また、注意すべき点として、3 / 2などの演算の結果は1.5になります。
1ではないので注意してください。

割り算の余り(剰余算)

Pythonで割り算の余り(剰余)を求めるには%(パーセント)を使います。

:::python
3 % 2

printで結果を出力してみます。

:::python
print(3 % 2)

↑のコードを実行すると↓のような結果になります。

1

32で割った余りは1になるので結果は1になります。


これ、注意したいのは、%の結果は整数ですが、/の結果は実数だということです。

:::python
3 / 2

↑の結果は1ではなくて1.5です。
ここらへんは割り算と剰余は違うので注意してください。

割り算の切り捨て

割り算(/)の結果は実数でした。

:::python
3 / 2

の結果は1.5です。

割り算の結果から小数点以下を切り捨てたい場合は//を使います。

:::python
3 // 2

printで出力してみましょう。

:::python
print(3 // 2)

↑の結果は1になります。

べき乗

べき乗とは、xy乗というような演算です。
このときyxの指数と言います。

と、言われてもピンと来ないと思うので↓を見てみてください。

2の8乗

↑は「2の8乗」と読みます。
この右上の小さい8が指数です。

これの意味は「2を8回、掛け算する」という意味です。

つまり
「2の8乗」

「2 * 2 * 2 * 2 * 2 * 2 * 2 * 2」
を表しています。

これを計算してみると結果は「256」になります。

で、Pythonで「2の8乗」を計算させるには**を使います。

:::python
2 ** 8

↑は「2の8乗」を計算しています。
「2 * 2 * 2 * 2 * 2 * 2 * 2 * 2」と書くよりずいぶん楽ですね。

これをprintで出力してみましょう。

:::python
print(2 ** 8)

結果は256になります。

演算の優先順位

各演算は組み合わせて書くことができます。
↓のコードはどれも有効です。

:::python
1 + 2 * 3
4 / 5 ** 6

ここで気になるのが演算の優先順位です。
Pythonの演算の優先順位、つまり、

:::python
1 + 2 * 3

という式があったとき、どの演算が先にされるのか? という話です。
これは、四則演算の場合は、みなさんが学校で習った優先順位と同じです。
つまり、掛け算と割り算は、足し算と引き算より優先されるということですね。
なので↑の結果は7になります。

ほかの演算の優先順位については、10. Full Grammar specification — Python 3.7.4 documentationに書いてあります。
↑のドキュメント、なかなか意味不明だと思いますが、これはBNFと呼ばれる、言語の文法を定義したフォーマットで書かれた文書です。
(将来的にPythonの文法を隅から隅まで理解したい! となったときは、このBNFを理解できるようになると近道かもしれません)

それでこのBNFを見ると各演算の優先順位は↓のようになっています。

  • **は他の演算より優先される
  • *, /, %, //は足し算と引き算より優先される

つまり、↓のような式があった場合、

:::python
2 ** 4 / 2 - 1

まず2 ** 4が演算されます。
その次に2 ** 4の結果に/ 2が演算されて、最後に- 1が演算されます。
よって結果は7.0になります。

この演算の優先順位をコントロールしたい場合はカッコを使います。

:::python
(1 + 2) * 3

↑の場合、先に(1 + 2)が計算されます。
よって結果は9になります。

演算と変数

演算した結果は変数に入れることができます。

:::python
x = 1 + 1

1 + 1の結果は2なので、xには2が入ります。

もちろん変数を演算することもできます。

:::python
x = 1
y = x + 1

↑はまずx1を入れています。
で、x + 1を演算してその結果をyに入れています。

よってyの結果は2になります。

:::python
x = 2
y = 8
z = x ** y

↑のzの値は何になるでしょうか?
正解は256です。

累算代入文

また、変数に対しては累算代入(るいさんだいにゅう)が行えます。
累算代入とは代入して累算することです。

累算……?

累算とはなにかを加えていって合計を出すことを指します。

たとえば変数を使った足し算では

:::python
a = a + 1

のようにすると、変数aの値を1増やせます。
累算代入を使うとこれをもっと簡単に書くことが出来ます。
たとえば↓のようにです。

:::python
a += 1

↑のコードの結果は変数a1を加えたものになります。

加算代入

+=を使って左辺の変数に右辺の値を加算します。

:::python
a = 0
a += 1

↑の変数aを出力すると↓のようになります。

:::python
1

減算代入

-=を使って左辺の変数に右辺の値を減算します。

:::python
a = 0
a -= 1

↑の変数aを出力すると↓のようになります。

:::python
-1

乗算代入

*=を使って左辺の変数に右辺の値を乗算します。

:::python
a = 2
a *= 2

↑の変数aを出力すると↓のようになります。

:::python
4

除算代入

/=を使って左辺の変数に右辺の値を除算します。

:::python
a = 4
a /= 2

↑の変数aを出力すると↓のようになります。

:::python
2

除算切り捨て代入

//=を使って左辺の変数に右辺の値を除算します。

:::python
a = 4
a //= 3

↑の変数aを出力すると↓のようになります。

:::python
1

剰余算代入

%=を使って左辺の変数に右辺の値を剰余算します。

:::python
a = 4
a %= 3

↑の変数aを出力すると↓のようになります。

:::python
1

べき乗算代入

**=を使って左辺の変数に右辺の値をべき乗算します。

:::python
a = 2
a **= 8

↑の変数aを出力すると↓のようになります。

:::python
256

おわりに

今回は数と演算について詳しく見てみました。
最初のうちは、四則演算だけ頭に入れておけばいいでしょう。
ほかの演算については、必要になったらその都度調べれば自然に覚えられます。
そうなったらまたこのブログを読み返してみてください。

次回に続きます。

また見てね

関連動画