できない.dev

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 を使えば解決する。

よくある原因

  1. str と int の連結: "合計" + count のように型が混ざっている。
  2. input() の結果: input() は常に文字列を返すため、数値と足すとこのエラーになる。
  3. 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, で渡すと、各値を空白区切りで出力する。
連結ではないので型エラーにならない。

この記事は役立ちましたか?