まず結論

このエラーは、文字列と数値をそのまま + でつなげようとしたときによく出ます。

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)

読み方のコツ

エラー文に strint が出てきたら、「文字列と整数が混ざっている」と考えます。
表示したいのか、計算したいのかを先に決めると直し方が選びやすくなります。