ユーニックス総合研究所

  • home
  • archives
  • python-amari

あまり知られていないPythonの「あまり」の求め方【割り算、剰余算、divmod】

  • 作成日: 2022-03-23
  • 更新日: 2023-12-24
  • カテゴリ: Python

あまり知られていないPythonの「あまり」の求め方

Pythonでは演算で「割り算のあまり」を求めることができます。
これはよく知られた方法があります。

しかし「割り算の結果とあまりを同時に求める方法」は、あまりだけにあまり知られていません。
これは結論から言うとdivmod関数を使います。

この記事ではPythonの基本的な演算である割り算、剰余算と、divmodの使い方を解説します。

関連記事

頭が悪い人のPythonのevalの使い方
頭がいい人のPythonのexitの使い方
状態遷移による文字列パースのテクニック【Python】
形態素解析で代名詞+助詞+名詞を文章から抜き出す【Python, 自然言語処理, Janome】
在宅・未経験、Pythonで稼ぐ方法は?【取引・宣伝・広告】

割り算の方法

Pythonでは割り算は↓のように書きます。

a = 3 / 2  
print(a)  # 1.5  

↑のように「/」を使うと実数による結果が求まります。
これを整数にしたい場合は「//」を使います。

a = 3 // 2  
print(a)  # 1  

式の右側を「0」にしてしまうとゼロ除算エラーが発生します。

2 / 0  
Traceback (most recent call last):  
  File "zerodiv.py", line 1, in <module>  
    2 / 0  
ZeroDivisionError: division by zero  

例外ZeroDivisionErrorが発生しますが、この例外はキャッチすることもできます。

try:  
    2 / 0  
except ZeroDivisionError as e:  
    print('I got error.', e)  # I got error. division by zero  

ZeroDivisionErrorが発生しそうなときはtry文でキャッチしておく選択肢もあります。

割り算の余りの求め方

割り算のあまり(剰余)を求めるには「%」を使います。

a = 3 % 2  
print(a)  # 1  

↑の場合、「3」を「2」で割ると「1あまり1」になります。
そのため変数aには「1」が入ります。

この剰余演算子は割り算の仲間の演算子なので、ゼロ除算エラーが発生します。

2 % 0  
Traceback (most recent call last):  
  File "zeromod.py", line 1, in <module>  
    2 % 0  
ZeroDivisionError: integer division or modulo by zero  

あまり知られていないdivmodの使い方

divmod関数は割り算の結果とあまりを同時に取得できる関数です。
結果はタプルで返ってきます。

a, b = divmod(3, 2)  # 3 / 2 かつ 3 % 2  
print(a, b)  # 1 1  

divmodの第1引数には割る対象、第2引数には割る数を指定します。

組み込み関数 — divmod — Python 3.10.0b2 ドキュメント

おわりに

今回はPythonの割り算と剰余算(Mod)、そしてdivmodの使い方を解説しました。
これらを押さえておけばPythonの割り算はパーペキですね。

🦝 < あまりだけにあまり知られていない

🐭 < おっさん・・・