Python「unsupported operand type(s) for +: ‘int’ and ‘str’」エラーの原因と解決方法【完全ガイド】

 

Pythonでよく遭遇するエラー「unsupported operand type(s) for +: ‘int’ and ‘str’」について、原因から解決方法まで詳しく解説します。初心者が陥りやすいケースと対処法を具体的なコード例とともに紹介していきます。

エラーの基本的な原因

このエラーは、数値(int)と文字列(str)を直接足し算(+演算子)で結合しようとした時に発生します。

エラーが発生するコード例

age = 25
message = "私は" + age + "歳です"  # TypeError発生

解決方法一覧

1. str()関数で数値を文字列に変換

最も基本的な解決方法です。

age = 25
message = "私は" + str(age) + "歳です"
print(message)  # 私は25歳です

2. f文字列(フォーマット文字列)を使用

Python 3.6以降で推奨される方法です。

age = 25
message = f"私は{age}歳です"
print(message)  # 私は25歳です

3. format()メソッドを使用

Python 2.7以降で使用できる方法です。

age = 25
message = "私は{}歳です".format(age)
print(message)  # 私は25歳です

4. %演算子を使用

古典的な文字列フォーマット方法です。

age = 25
message = "私は%d歳です" % age
print(message)  # 私は25歳です

よくあるエラーパターンと対処法

パターン1: ユーザー入力の処理

# エラーが発生するコード
number = input("数値を入力: ")  # input()は常に文字列を返す
result = number + 10  # TypeError

# 修正版
number = int(input("数値を入力: "))
result = number + 10

パターン2: リストの要素と数値の結合

# エラーが発生するコード
numbers = ["1", "2", "3"]
total = 0
for num in numbers:
    total = total + num  # TypeError

# 修正版
total = 0
for num in numbers:
    total = total + int(num)

パターン3: 計算結果の表示

# エラーが発生するコード
x, y = 10, 20
result = "答えは" + (x + y)  # TypeError

# 修正版1: str()を使用
result = "答えは" + str(x + y)

# 修正版2: f文字列を使用
result = f"答えは{x + y}"

データ型の確認方法

エラーを防ぐために、変数の型を確認する方法を覚えておきましょう。

age = 25
name = "田中"
print(type(age))   # <class 'int'>
print(type(name))  # <class 'str'>

型変換の基本パターン

文字列から数値への変換

str_num = "123"
int_num = int(str_num)      # 整数に変換
float_num = float(str_num)  # 小数に変換

数値から文字列への変換

number = 456
str_number = str(number)  # "456"

実践的な解決例

例1: 年齢計算プログラム

birth_year = int(input("生まれた年: "))
current_year = 2025
age = current_year - birth_year
print(f"あなたは{age}歳です")

例2: 商品価格の表示

price = 1200
tax_rate = 0.1
total = int(price * (1 + tax_rate))
print(f"税込価格: {total}円")

例3: スコアの合計表示

scores = [85, 92, 78]
total = sum(scores)
print(f"合計点: {total}点")

まとめとベストプラクティス

エラーを防ぐための基本原則:

  1. 型を意識する: 変数がどの型か常に把握する
  2. f文字列を活用: Python 3.6以降では最も読みやすい
  3. 入力値の型変換: input()の結果は必ず文字列であることを忘れない
  4. デバッグ時はtype()を使用: 型が不明な時は確認する

このエラーは初心者が最初に遭遇する典型的なTypeErrorの一つです。適切な型変換や文字列フォーマット方法を身につけることで、スムーズに解決できるようになります。特にf文字列は現代的で読みやすいため、積極的に活用することをおすすめします。

■プロンプトだけでオリジナルアプリを開発・公開してみた!!

■AI時代の第一歩!「AI駆動開発コース」はじめました!

テックジム東京本校で先行開始。

■テックジム東京本校

「武田塾」のプログラミング版といえば「テックジム」。
講義動画なし、教科書なし。「進捗管理とコーチング」で効率学習。
より早く、より安く、しかも対面型のプログラミングスクールです。

<短期講習>5日で5万円の「Pythonミニキャンプ」開催中。

<月1開催>放送作家による映像ディレクター養成講座

<オンライン無料>ゼロから始めるPython爆速講座