まず結論
このエラーは、文字列と数値をそのまま + でつなげようとしたときによく出ます。
age = 12
print("年齢は" + age)
"年齢は" は文字列ですが、age は数値です。
Pythonは「文字列と数値をそのまま連結していい」とは判断しません。
こんなときに読む記事です
次のようなエラーで止まった人向けです。
TypeError: can only concatenate str (not "int") to str
英語が長く見えますが、言っていることは「文字列には文字列しかつなげられません」に近いです。
str()で文字列にする
文字として表示したいなら、数値を str() で文字列にします。
age = 12
print("年齢は" + str(age))
これで "年齢は12" と表示できます。
f文字列を使う方法
初心者には、f文字列も読みやすいです。
age = 12
print(f"年齢は{age}")
{age} の部分に変数の値が入ります。
文字列と数値を無理に + でつなげなくて済みます。
計算したいなら数値のまま
文字列にすると、計算ではなく「文字」として扱われます。
price = 100
count = 3
print(price * count)
このように計算したい場合は、数値のまま使います。
入力は文字列になる
input() で受け取った値は、見た目が数字でも文字列です。
age = input("年齢は?")
print(age + 1)
このコードはエラーになります。
数値として計算したいなら、int() で変換します。
age = int(input("年齢は?"))
print(age + 1)
読み方のコツ
エラー文に str と int が出てきたら、「文字列と整数が混ざっている」と考えます。
表示したいのか、計算したいのかを先に決めると直し方が選びやすくなります。
3行まとめ
- 文字列と数値はそのまま+で連結できない。
- 文字としてつなげたいならstr()で文字列にする。
- 計算したいなら数値のまま扱う。