Pythonのdivmod関数を使って商と余りを出すモジュロ演算を行う方法

スポンサーリンク

今回は、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() 関数 – エラーと例外

  1. divmod() 関数に渡された最初の引数の値がゼロ(0)の場合、関数は (0, 0) というペアを返します。

例として以下の様になります。

x= 0
y= 3
  
res_div = divmod(x,y)
print(res_div)

結果は、以下の通りになります。

(0, 0)
  1. 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
  1. 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のdivmod()関数の動作を理解することができました。


タイトルとURLをコピーしました