算術演算子の概要
Pythonの算術演算子は、足し算・引き算・掛け算・割り算に加えて、剰余(あまり)や冪乗(べき乗)、整数除算(切り捨て)まで含む「計算の道具箱」です。代表的なものは +, -, *, /, //, %, ** で、これらを組み合わせるだけで多くの実務的な計算をシンプルに書けます。
基本の四則演算
加算・減算・乗算の直感的な使い方
加算 +、減算 -、乗算 * はそのまま直感的に使えます。数値同士の演算は、整数なら整数、小数が混ざれば小数で返ります。読みやすさのため、意味のある変数名を使い、計算式を「左から右へ」追えるように保つとミスが減ります。
price = 1200
discount = 200
final = (price - discount) * 2 # 2個買う
print(final) # 2000
Python割り算と整数除算の違い(ここが重要)
割り算 / は常に小数(float)を返します。整数の「切り捨て結果」が欲しいときは //(整数除算)を使いましょう。// は「床方向(より小さい整数)への丸め」で、負数が絡むと直感とズレやすいので注意が必要です。
print(7 / 2) # 3.5(float)
print(7 // 2) # 3 (整数除算)
print(-7 // 2) # -4 (-3.5より小さい整数へ)
Pythonこの違いは、合計・平均・端数処理などで結果の型と値を左右します。金額などで「端数切り捨て」をしたいときは // を使い、計算過程の精度が欲しいときは / で float を扱うのが安全です。
応用演算子
剰余 % の定義と負数の挙動(深掘り)
剰余 % は「割り算の余り」を返します。Pythonでは「商と余りの関係」 (-10 = (-4) \cdot 3 + 2) を満たすように設計されており、負数の余りが期待と違って見えることがあります。この定義を理解すると、偶数・奇数判定や周期計算で安定したコードを書けます。
print(10 % 3) # 1
print(-10 % 3) # 2 (-10 = -4*3 + 2 を満たす)
# 偶数・奇数判定
n = 27
print(n % 2 == 0) # False(奇数)
Python冪乗 ** と平方根
冪乗 ** は指数計算に使います。平方根は冪乗 x ** 0.5 でも求められますが、数学的な関数は math モジュールの方が意図が明確です。
print(2 ** 10) # 1024
import math
print(math.sqrt(3)) # 1.732...
Python優先順位と括弧
演算子の優先順位の基本
Pythonの演算子の優先順位は数学のルールに準じます。まず冪乗 **、次に乗除 *, /, //, %、その後に加減 +, - の順で評価されます。複雑な式では括弧 () を使って「意図した順序」を明示するのが安全です。
print(3 + 4 * 5) # 23(掛け算が先)
print((3 + 4) * 5) # 35(括弧で順序を指定)
Python読みやすさのための括弧
括弧は「計算順序を変える」だけでなく「読み手の誤解を防ぐ」効果があります。特に長い式、業務ルールが絡む式、端数処理の混在する式では、括弧で小さな意味単位に分けるとレビューや保守が楽になります。
複合代入演算子の使いどころ
+=, -=, *=, /=, //=, %=, **= は「更新」を簡潔に書くための演算子です。ループ内の合計や、カウンタのインクリメント、指数的な更新などに向いています。型が変わる可能性(例: /= は int→float)を意識し、後続処理と整合させましょう。
total = 0
for p in [120, 340, 560]:
total += p
print(total) # 1020
Python例題で身につける
合計と平均(/ でfloat、// で整数)
平均値は合計を件数で割るだけですが、結果は float になります。整数での平均(切り捨て)が必要なら // を使います。
scores = [70, 85, 90]
avg = sum(scores) / len(scores)
print(avg) # 81.666...
avg_int = sum(scores) // len(scores)
print(avg_int) # 81
Pythonレジの端数処理:// と % で丸める
金額の端数を10円単位で切り捨て・切り上げ・端数抽出する例です。// と % を組み合わせると読みやすい端数処理になります。
amount = 1234
tens_floor = (amount // 10) * 10 # 10円単位で切り捨て → 1230
tens_remainder = amount % 10 # 端数(1円単位) → 4
tens_ceil = ((amount + 9) // 10) * 10 # 10円単位で切り上げ → 1240
print(tens_floor, tens_remainder, tens_ceil)
Python奇数・偶数判定と周期処理(% の基本パターン)
剰余を使えば、周期的な処理や偶数・奇数判定が簡潔に書けます。
n = 14
if n % 2 == 0:
print("偶数")
for i in range(10):
if i % 3 == 0:
print("3の倍数:", i)
Pythonべき乗で成長計算(** を実務に)
指数的に増える処理(複利、指数バックオフなど)は ** が直感的です。
base = 2
steps = 5
value = base ** steps # 2^5 = 32
print(value)
Pythonまとめ
算術演算子は「/ と // の違い」「% の定義(負数の挙動)」「優先順位と括弧」を押さえると、現場でのバグが激減します。端数処理や周期判定、指数的計算はパターン化できるので、同じ使い方を繰り返し体に覚えさせるのが近道です。複合代入で更新処理を簡潔にしつつ、型の変化に気をつければ、読みやすく安定した計算コードを書けます。
