Code Fix

中級

// と / の違い(整数除算と真の除算)

// は切り捨て除算、/ は常に浮動小数点数を返す真の除算です。小数の結果が欲しい場面で // を使うと、エラーなく結果だけが狂います。

なぜエラーが出ないのか

出力: 3
(エラーなし)
Pythonは何も報告しません。文法として正しいためです
出力: 3
実際の挙動 — 期待した結果と食い違っている箇所
見つけ方
エラーが出ないので、出力を目で確かめるしかありません。この種の誤りが最も発見が遅れます

このエラーが出る典型パターン

パターン1

 1  total = 7
 2  count = 2
 3  average = total // count
                     ^
 4  print(average)
出力: 3期待: 3.5 (エラーにはなりません)

//は切り捨て除算です。平均のような小数を求めたい場面で使うと、エラーは出ないまま結果だけがずれます。

直し方: /// にします。

この問題を解いてみる →

広告
広告スロット(未設定)

パターン2

 1  a = 3
 2  b = 8
 3  percent = a // b * 100
                 ^
 4  print(percent)
出力: 0期待: 37.5 (エラーにはなりません)

整数同士の//は結果も整数(切り捨て)です。パーセンテージ計算では/を使わないと情報が丸ごと消えます。

直し方: /// にします。

この問題を解いてみる →

パターン3

 1  distance = 10
 2  time = 4
 3  speed = distance // time
                      ^
 4  print(speed)
出力: 2期待: 2.5 (エラーにはなりません)

他言語のint同士の割り算の感覚で//を使うと、Pythonでは意図的な切り捨て除算という別の演算子を使ったことになります。

直し方: /// にします。

この問題を解いてみる →

よくある誤解

他言語のint同士の割り算に慣れていると「Pythonの/も切り捨てるはず」と誤解しがちですが、Python 3の/は常にfloatを返します。切り捨てたい場合は明示的に//を使います。

まとめ

// と / の違い(整数除算と真の除算)は中級でつまずきやすい項目です。上の3パターンを実際に手で直すと、エラーメッセージのどこを読めばよいかが掴めます。

演習をはじめる

関連するエラー

広告
広告スロット(未設定)