Python で「TypeError: can only concatenate str (not "int") to str」が直らない
文字列に数値などを + で連結すると出る型エラー。
数値側を str() で文字列化するか、f-string や print のカンマ区切りで組み立てる。
公開:
要約
TypeError: can only concatenate str (not "int") to str は、文字列 str に対して + で int などの別の型を連結しようとしたときに出る。
Python の + は「文字列同士」か「数値同士」でしか使えず、"個数: " + 3 のような混在は暗黙変換されない。
数値を str() で文字列化するか、f-string を使えば解決する。
よくある原因
- str と int の連結:
"合計" + countのように型が混ざっている。 - input() の結果:
input()は常に文字列を返すため、数値と足すとこのエラーになる。 - None やリスト: 関数が
Noneを返し、それを文字列に連結している。
解決策
1. str() で明示的に変換する
count = 3
print("合計: " + str(count) + "件")+ で連結するなら、数値側を str() で文字列にそろえる。
逆に文字列を数値として足したいなら int() で変換する。
2. f-string で埋め込む
count = 3
print(f"合計: {count}件")最も読みやすい方法。{} の中では型変換が自動で行われるため、str() を書かなくてよい。
3. print のカンマ区切りを使う
count = 3
print("合計:", count, "件")print に , で渡すと、各値を空白区切りで出力する。
連結ではないので型エラーにならない。