AI AIワークナビ AI Work Studio
メニュー
AIワークナビ ホーム

PythonのZeroDivisionError: division by zeroを直す|0で割れない原因

Pythonで割り算をしたとき、ZeroDivisionError: division by zero と表示されることがあります。これは、割る数が0になっていることが原因です。この記事では、代金を人数で割るコードを使い、エラーの再現、0を事前に確認する修正、try/except で処理する方法を順番に確認します。

結論

割る数が0になる可能性がある場合は、割り算の前に確認します。今回の例では、people == 0 のときは計算せず、利用者に人数を直してもらう案内を表示します。

total = 1200
people = 0

if people == 0:
    print('人数を1以上にしてください')
else:
    print(f'1人あたり: {total / people:.0f}円')

発生している問題

次のコードは、1200円を0人で分けようとしています。Pythonの文法は正しいため実行は始まりますが、4行目の割り算で処理が止まります。

修正前コード

total = 1200
people = 0

print(f'1人あたり: {total / people:.0f}円')

ローカルのPython 3.14.2とAI Work StudioのPython 3.12で実行すると、どちらも最後に次のエラーが表示されました。

ZeroDivisionError: division by zero

原因

total / people では、右側の people が割る数です。この値が0のため、Pythonは計算を続けられず ZeroDivisionError を発生させます。エラー名にある division by zero は「0による割り算」という意味です。

Python公式ドキュメントでも、ZeroDivisionError は割り算または剰余演算の2番目の引数が0のときに発生すると説明されています。また、これは構文エラーではなく、実行中に起きる例外です。

たとえば、人数をフォームや標準入力から受け取るプログラムでは、利用者が0を入力する場合があります。合計金額が正しくても、割る側が0ならエラーになるため、total ではなく people を確認します。どちらの変数を確認すべきかは、割り算記号 / の右側を見ると判断できます。

修正後コード

最も分かりやすい修正は、割り算より前に0を確認する方法です。0なら案内を表示し、0以外のときだけ計算します。

total = 1200
people = 0

if people == 0:
    print('人数を1以上にしてください')
else:
    print(f'1人あたり: {total / people:.0f}円')

実行結果

people = 0 の結果は次のとおりです。

人数を1以上にしてください

people = 3 へ変更すると、割り算が実行されます。

1人あたり: 400円

ローカルとAI Work Studioで修正前、0の事前確認、正常値の3パターンを実行し、エラー名と出力が記事の記載どおりになることを確認しました。Pythonの結果はConsoleに表示され、Previewには表示する内容がありません。標準入力を使わない例なので、入力欄は空のままです。

try/exceptで処理する方法

関数の奥で割り算するなど、事前に値を確認しにくい場合は、発生した例外を except ZeroDivisionError で受け取れます。すべてのエラーをまとめて捕まえず、今回予想している例外だけを指定するのがポイントです。

一方、今回のように0が入力値として想定できるなら、先に if で確認する方が、利用者へ修正方法を案内しやすくなります。try/except はエラーを隠すためではなく、予想した例外が起きたときの動作を決めるために使います。

total = 1200
people = 0

try:
    print(f'1人あたり: {total / people:.0f}円')
except ZeroDivisionError:
    print('0では割れません')

実行結果は次のとおりです。

0では割れません

よくある間違い

0を確認しても、その後で必ず割る

案内を表示しただけで次の行へ進むと、後から同じ割り算が実行されます。ifelse に処理を分け、0のときは割り算へ進まない形にします。

エラーを非表示にするだけ

except: だけを書くと、変数名の間違いなど別の不具合まで隠すことがあります。今回は except ZeroDivisionError: と具体的に書きます。

小数の0なら問題ないと思う

0 だけでなく 0.0 で割っても同じ例外になります。入力値や計算結果が0になる可能性まで考えて、割る直前の値を確認します。

AI Work Studioで試す手順

  1. AI Work Studioを開き、Pythonタブを選びます。
  2. 修正前コードを貼り、「Pythonを実行」を押します。
  3. Consoleの最後に ZeroDivisionError: division by zero が出ることを確認します。
  4. 修正後コードへ置き換え、people = 0 で実行します。
  5. 人数を1以上にしてください を確認したら、people = 3 へ変えて再実行します。
  6. 1人あたり: 400円 になれば、0の場合と正常な場合の両方を確認できています。

まとめ

ZeroDivisionError: division by zero は、割る数が0のときに発生する実行時の例外です。利用者の入力や計算結果が0になる可能性があるなら、割り算の前に値を確認します。事前確認が難しい処理では except ZeroDivisionError を使い、予想した例外だけを扱いましょう。

関連記事