まず結論
TypeError: unsupported operand type(s) は、演算子に合わない型を使ったときに出ます。
result = "3" - 1
"3" は文字列で、1 は数値です。
文字列から数値を引くことはできないため、エラーになります。
こんなときに読む記事です
次のようなエラーで止まった人向けです。
TypeError: unsupported operand type(s) for -: 'str' and 'int'
意味は「- に対して、str と int の組み合わせは使えません」です。
絵で見るなら
演算子は、左右の材料を受け取る道具として見ると分かりやすいです。
+ や - の左右に、どんな種類の値が置かれているかを確認します。
道具に合わない材料を渡すと、Pythonは「この組み合わせでは使えない」と止まります。
左右の型を見る
エラー文には、使えなかった型が書かれます。
'str' and 'int'
str は文字列、int は整数です。
見た目が数字でも、クォートで囲まれていれば文字列です。
"3"
これは数値ではなく文字列です。
数値として計算したいとき
文字列を数値として使いたいなら、int() や float() で変換します。
result = int("3") - 1
print(result)
この場合は 2 が表示されます。
文字としてつなげたいとき
反対に、文字としてつなげたいなら、数値を str() にします。
message = "残り" + str(3) + "個"
print(message)
str(3) にすると、数値の 3 を表示用の文字列として扱えます。
読み方のコツ
unsupported operand type(s) が出たら、まず演算子を探します。
"3" - 1
次に、左右の値の種類を見ます。
「計算したいのか」「文字としてつなげたいのか」を決めて、必要なら変換します。
手を動かすミニ練習
次のコードを動かして、エラーを確認してみましょう。
print("10" - 2)
次に、int("10") に変えて、動く形を確認します。
3行まとめ
- unsupported operand type(s) は、演算子に合わない型を使ったときに出る。
- + や - の左右にある値の種類を確認する。
- 文字列と数値を混ぜたいときは、変換が必要になる。