こんにちは、PyQサポートです。
今回は、 TypeError: unsupported operand type(s) for /: 'str' and 'int'
というエラーの意味と考えられる原因を紹介します。
TypeError: unsupported operand type(s) for /: 'str' and 'int' のエラーの意味と対処法
以下のように、文字列扱いの数値が代入されている変数 num1
を使って、 num1 / 100
のように演算子 /
を使って割り算を行うと、エラー TypeError: unsupported operand type(s) for /: 'str' and 'int'
が発生します。
これは、「演算子 /
に文字列(str
)と整数(int
)の計算は想定されていない」という意味のエラーです。
>>> num1 = "200" >>> num1 / 100 Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: unsupported operand type(s) for /: 'str' and 'int'
数値同士で /
演算子を使うと割り算が実行されます。
このエラーが発生したときは 「数値のつもりだったのに文字列だった」 ことがエラーの原因と考えられます。
文字列が変数に代入される可能性がある場合は、 float()
または int()
を使うとこのエラーを回避できます。
>>> float(num1) /100 2.0
変数の型を確認する
以下の変数 num1
、 num2
を print()
すると両方 200
と表示されてしまいます。
変数の型を確認するには、 type()
を使います。
type()
を使うと変数に代入されている値の型がわかります。
>>> num1 = "200" >>> num2 = 200 >>> print(num1, num2) 200 200 >>> type(num1) <class 'str'> >>> type(num2) <class 'int'>
似たようなエラーの紹介
同じようなエラーを紹介します。
TypeError: unsupported operand type(s) for /: 'str' and 'str'
また、文字列同士で演算子 /
を使用しても同じようなエラーが発生します。
>>> "ABC" / "x" Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: unsupported operand type(s) for /: 'str' and 'str'
TypeError: unsupported operand type(s) for /: 'list' and 'int'
他にも、リストと整数で演算子 /
を使用しても同じようなエラーが発生します。
>>> [1, 2, 3]/10 Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: unsupported operand type(s) for /: 'list' and 'int'
まとめ
エラー TypeError: unsupported operand type(s) for /: 'xxx' and 'yyy'
は、割り算に演算子 /
を使うとき、演算対象の値の型が、 int でも float でもない場合に発生します。