Python算術演算子完全ガイド – 基本から応用まで徹底解説(四則演算、べき乗、リスト・文字列の結合など)

 

算術演算子とは?

Python の算術演算子は、数値に対して数学的な計算を行うための記号です。加算、減算、乗算、除算などの基本的な演算から、べき乗や剰余演算まで、様々な計算処理を簡潔に記述できます。

基本的な算術演算子一覧

1. 加算(+)

# 基本的な加算
result = 5 + 3
print(result)  # 8

# 浮動小数点数の加算
result = 2.5 + 1.3
print(result)  # 3.8

2. 減算(-)

# 基本的な減算
result = 10 - 4
print(result)  # 6

# 負数の生成
result = -5
print(result)  # -5

3. 乗算(*)

# 基本的な乗算
result = 6 * 7
print(result)  # 42

# 文字列の繰り返し
result = "Hello" * 3
print(result)  # HelloHelloHello

4. 除算(/)

# 通常の除算(浮動小数点結果)
result = 15 / 4
print(result)  # 3.75

# 整数同士でも浮動小数点になる
result = 10 / 5
print(result)  # 2.0

5. 整数除算(//)

# 整数部分のみを取得
result = 15 // 4
print(result)  # 3

# 負数での整数除算
result = -15 // 4
print(result)  # -4

6. 剰余(%)

# 余りを求める
result = 15 % 4
print(result)  # 3

# 偶数・奇数の判定
number = 7
if number % 2 == 0:
    print("偶数")
else:
    print("奇数")  # 奇数

7. べき乗(**)

# 基本的なべき乗
result = 2 ** 3
print(result)  # 8

# 平方根の計算
result = 16 ** 0.5
print(result)  # 4.0

演算子の優先順位

1. 優先順位の順番

# 演算子の優先順位
result = 2 + 3 * 4
print(result)  # 14 (3*4が先に計算される)

# 括弧で優先順位を変更
result = (2 + 3) * 4
print(result)  # 20

2. 複雑な計算例

# 複数の演算子を含む計算
result = 2 ** 3 + 10 // 3 - 1
print(result)  # 10 (8 + 3 - 1)

# 括弧を使った明確な記述
result = (2 ** 3) + (10 // 3) - 1
print(result)  # 10

複合代入演算子

1. 基本的な複合代入

# 加算代入
x = 5
x += 3
print(x)  # 8

# 乗算代入
y = 4
y *= 2
print(y)  # 8

2. 全ての複合代入演算子

# 各種複合代入演算子
a = 10
a -= 3    # a = a - 3
print(a)  # 7

b = 6
b *= 4    # b = b * 4
print(b)  # 24

c = 20
c //= 6   # c = c // 6
print(c)  # 3

d = 17
d %= 5    # d = d % 5
print(d)  # 2

e = 2
e **= 4   # e = e ** 4
print(e)  # 16

異なるデータ型での演算

1. 整数と浮動小数点数

# 自動的に浮動小数点数に変換
result = 5 + 2.5
print(result)  # 7.5
print(type(result))  # <class 'float'>

# 除算は常に浮動小数点数
result = 10 / 2
print(type(result))  # <class 'float'>

2. 文字列との演算

# 文字列の連結
greeting = "Hello" + " " + "World"
print(greeting)  # Hello World

# 文字列の繰り返し
pattern = "-" * 20
print(pattern)  # --------------------

3. リストとの演算

# リストの連結
list1 = [1, 2, 3]
list2 = [4, 5, 6]
combined = list1 + list2
print(combined)  # [1, 2, 3, 4, 5, 6]

# リストの繰り返し
repeated = [0] * 5
print(repeated)  # [0, 0, 0, 0, 0]

実践的な使用例

1. 温度変換

def celsius_to_fahrenheit(celsius):
    return celsius * 9 / 5 + 32

def fahrenheit_to_celsius(fahrenheit):
    return (fahrenheit - 32) * 5 / 9

# 使用例
temp_c = 25
temp_f = celsius_to_fahrenheit(temp_c)
print(f"{temp_c}°C = {temp_f}°F")  # 25°C = 77.0°F

2. 消費税計算

def calculate_tax(price, tax_rate=0.1):
    tax = price * tax_rate
    total = price + tax
    return total

# 使用例
price = 1000
total = calculate_tax(price)
print(f"税込み価格: {total}円")  # 税込み価格: 1100.0円

3. BMI計算

def calculate_bmi(weight, height):
    bmi = weight / (height ** 2)
    return round(bmi, 2)

# 使用例
weight = 70  # kg
height = 1.75  # m
bmi = calculate_bmi(weight, height)
print(f"BMI: {bmi}")  # BMI: 22.86

数学的な応用例

1. 複利計算

def compound_interest(principal, rate, time):
    amount = principal * (1 + rate) ** time
    return round(amount, 2)

# 使用例
principal = 100000  # 元本
rate = 0.05  # 年利5%
time = 10  # 10年
result = compound_interest(principal, rate, time)
print(f"10年後: {result}円")  # 10年後: 162889.46円

2. 素数判定

def is_prime(n):
    if n < 2:
        return False
    for i in range(2, int(n ** 0.5) + 1):
        if n % i == 0:
            return False
    return True

# 使用例
for num in range(2, 20):
    if is_prime(num):
        print(f"{num}は素数")

3. フィボナッチ数列

def fibonacci(n):
    if n <= 1:
        return n
    a, b = 0, 1
    for _ in range(2, n + 1):
        a, b = b, a + b
    return b

# 使用例
for i in range(10):
    print(fibonacci(i), end=" ")
# 0 1 1 2 3 5 8 13 21 34

エラーハンドリング

1. ゼロ除算エラー

def safe_divide(a, b):
    try:
        return a / b
    except ZeroDivisionError:
        return "ゼロで割ることはできません"

print(safe_divide(10, 2))  # 5.0
print(safe_divide(10, 0))  # ゼロで割ることはできません

2. 型エラーの処理

def safe_add(a, b):
    try:
        return a + b
    except TypeError:
        return f"型が対応していません: {type(a)}, {type(b)}"

print(safe_add(5, 3))        # 8
print(safe_add("hello", 5))  # 型が対応していません: <class 'str'>, <class 'int'>

パフォーマンスの考慮事項

1. 演算速度の比較

import timeit

# 乗算 vs べき乗(小さい値の場合)
time_mul = timeit.timeit('x * x', setup='x = 5', number=1000000)
time_pow = timeit.timeit('x ** 2', setup='x = 5', number=1000000)

print(f"乗算: {time_mul:.6f}秒")
print(f"べき乗: {time_pow:.6f}秒")

2. 大きな数値の計算

# 大きな整数の計算もサポート
big_number = 10 ** 100
result = big_number * 2
print(f"桁数: {len(str(result))}")  # 101桁の数値

便利なテクニック

1. 値の交換

# 算術演算子を使った値の交換
a, b = 5, 10
a, b = b, a
print(f"a={a}, b={b}")  # a=10, b=5

2. 数値の桁数取得

def count_digits(n):
    if n == 0:
        return 1
    count = 0
    n = abs(n)
    while n > 0:
        n //= 10
        count += 1
    return count

print(count_digits(12345))  # 5

3. 平均値の計算

def calculate_average(numbers):
    if not numbers:
        return 0
    return sum(numbers) / len(numbers)

scores = [85, 92, 78, 96, 88]
avg = calculate_average(scores)
print(f"平均点: {avg}")  # 平均点: 87.8

よくある間違いと対処法

1. 整数除算の誤解

# Python 2 との違いに注意
result1 = 7 / 2    # 3.5 (Python 3)
result2 = 7 // 2   # 3 (整数除算)

print(f"通常の除算: {result1}")
print(f"整数除算: {result2}")

2. べき乗演算子の優先順位

# 演算子の優先順位に注意
result1 = -2 ** 2   # -4 (-(2**2))
result2 = (-2) ** 2 # 4

print(f"結果1: {result1}")
print(f"結果2: {result2}")

3. 浮動小数点の精度

# 浮動小数点の精度問題
result = 0.1 + 0.2
print(result)  # 0.30000000000000004

# 対処法: roundを使用
result = round(0.1 + 0.2, 2)
print(result)  # 0.3

まとめ

Python の算術演算子は、プログラミングの基礎となる重要な要素です。主なポイント:

  • 基本演算子: +, -, *, /, //, %, ** を適切に使い分ける
  • 優先順位: 括弧を使って明確な計算順序を示す
  • データ型: 異なる型での演算結果を理解する
  • エラー処理: ゼロ除算や型エラーに備える
  • パフォーマンス: 大量計算時は効率的な方法を選択する

これらの演算子を適切に使いこなすことで、効率的で読みやすいPythonコードが書けるようになります。