Python3プログラミング:3/10と3//10と3%10の違い

Python3で3/10, 3//10, 3%10を入力すると以下のoutputが返ってくる。

(0.3, 0, 3)

0.3は分かるが、0と3は?となった。演算子//は整数除算(floor division, integer division)と呼ばれ、浮動小数点除算(floating point division)演算子/とは違う。

floor divisionと言われているように、ceiling(上)ではなく下の値を取る。つまり、5/2は2.5になるが、5//2は2になる。四捨五入で3にはならずに2になる。8//3も2になる。

3%10のモジュロ演算子%(modulus operator)は、剰余演算を行い、例えば、10%3なら3余り1なので1になる。問題の3%10が何故3なのかというと、浮動小数点演算3/10は0.3、整数演算3//10だと0になる。0余り3なので3になるというわけだ。1%10なら1、9%10なら9になる。

3.9%1.2ならどうだろうか?答えは0.3000で、divmod(3.9, 1.2)(3.0, 0.3000)、商3余り0.3になる。

%による以下のような簡単なプログラミングが可能。

1
2
3
4
5
for x in range(1, 10):
    if x%2 == 0:
      print (x, "is even")
    else:
      print (x, "is odd")

このプログラムを実行すると以下のようなアウトプットが得られる。

1 is odd
2 is even
3 is odd
4 is even
5 is odd
6 is even
7 is odd
8 is even
9 is odd
スポンサーリンク