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}点")
まとめとベストプラクティス
エラーを防ぐための基本原則:
- 型を意識する: 変数がどの型か常に把握する
- f文字列を活用: Python 3.6以降では最も読みやすい
- 入力値の型変換:
input()の結果は必ず文字列であることを忘れない - デバッグ時は
type()を使用: 型が不明な時は確認する
このエラーは初心者が最初に遭遇する典型的なTypeErrorの一つです。適切な型変換や文字列フォーマット方法を身につけることで、スムーズに解決できるようになります。特にf文字列は現代的で読みやすいため、積極的に活用することをおすすめします。
■プロンプトだけでオリジナルアプリを開発・公開してみた!!
■AI時代の第一歩!「AI駆動開発コース」はじめました!
テックジム東京本校で先行開始。
■テックジム東京本校
「武田塾」のプログラミング版といえば「テックジム」。
講義動画なし、教科書なし。「進捗管理とコーチング」で効率学習。
より早く、より安く、しかも対面型のプログラミングスクールです。
<短期講習>5日で5万円の「Pythonミニキャンプ」開催中。
<月1開催>放送作家による映像ディレクター養成講座
<オンライン無料>ゼロから始めるPython爆速講座
