今回は、Pythonのdivmod()関数の動作と使い方を詳しく公開します。
1. Python の divmod() 関数
Python には、2つの入力値に対して割り算とモジュロ演算を行う divmod() 関数が組み込まれています。
divmod()` 関数は、引数として2つの値を受け取り、value1/value2 という除算と value1%value2 というモジュロ演算を行い、商と余りをペアで返します。
構文は以下の様な感じです。
divmod (value1, value2)
|
- 値1を分母とする
- 値2を分母とする
例として以下の様になります。
x = 10
y = 2
res_div = divmod (x,y)
print (res_div)
|
上の例では、divmod() 関数に 10 と 2 を渡しています。
さらに、divmod() 関数は 10/2 の除算と 10%2 の剰余演算を行い、商と余りを返します。
出力は
( 5 , 0 )
|
例2:
x = int ( input ())
y = int ( input ())
res_div = divmod (x,y)
print (res_div)
|
結果は、以下の通りになります。
( 2 , 0 )
|
例3:
x = 10
y = 3
res_div = divmod (x,y)
print (res_div)
|
結果を出力すると、以下の様になります。
( 3 , 1 )
|
Python の divmod() 関数と浮動小数点数の関係
divmod() 関数が引数として float 値を受け取ったとき、この関数は上に示したのと同様の方法で商と余りを計算します。
しかし,divmod()関数の引数にfloat値が渡されると,得られた値の全体,すなわち小数部分を省いた商の値が返されます。
例えば、以下の様になります。
x = 10.5
y = 5
res_div = divmod (x,y)
print (res_div)
|
上で見たように,divmod(10.5, 5) は (2.0, 0.5) を返します。
なぜなら,float 値が遭遇したとき,結果の中の小数の部分を省略するからです(例えば 10.5/5 は 2.1 の代わりに 2.0 になります)。
このように、小数点以下が省略される。
結果は以下の通りです。
( 2.0 , 0.5 )
|
例2:
x = 10
y = 2.4
res_div = divmod (x,y)
print (res_div)
|
結果を出力すると、以下の様になります。
( 4.0 , 0.40000000000000036 )
|
Python divmod() 関数 – エラーと例外
- divmod() 関数に渡された最初の引数の値がゼロ(0)の場合、関数は (0, 0) というペアを返します。
例として以下の様になります。
x = 0
y = 3
res_div = divmod (x,y)
print (res_div)
|
結果は、以下の通りになります。
( 0 , 0 )
|
- divmod() 関数に渡された第二引数の値がゼロ(0)であるような場合、関数は ZeroDivisionError、すなわちゼロによる除算エラーを返します。
例2:
x = 5
y = 0
res_div = divmod (x,y)
print (res_div)
|
結果は、以下の通りになります。
Traceback (most recent call last): File "main.py" , line 4 , in <module>
res_div = divmod (x,y)
ZeroDivisionError: integer division or modulo by zero
|
- divmod() 関数が引数として複素数に遭遇した場合、例外 TypeError を発生させます。
例 3:
inp1 = 10 + 5J
inp2 = 4
res_div = divmod (inp1, inp2)
print (res_div)
|
結果は、以下の通りになります。
Traceback (most recent call last): File "main.py" , line 4 , in <module>
res_div = divmod (inp1, inp2)
TypeError: can't take floor or mod of complex number.
|
概要
- Python の divmod() 関数は、2 つの値をパラメータリストとして受け取り、2 つの値に対して除算とモジュロを実行します。
- divmod()関数は商と余りをペアにして返します。
- divmod() 関数に float 値が渡された場合,商と余りをそれぞれ小数部を除いた値で返します.
- divmod()関数に渡された第2引数が0であった場合、ZeroDivisionErrorが発生します。
- 引数として複素数が渡された場合、例外としてTypeErrorが発生します。
この記事もチェック:Pythonのmapメソッドの使い方|ラムダ関数や引数が複数の場合の使い方も解説
まとめ
この記事では、Pythonのdivmod()関数の動作を理解することができました。