Borislav Hadzhiev
Last updated: Apr 20, 2022
Check out my new book
The Python "TypeError: unsupported operand type(s) for /: 'str' and 'int'"
occurs when we try to use the division /
operator with a string and a number.
To solve the error, convert the string to an int
or a float
, e.g.
int(my_str) / my_num
.
Here is an example of how the error occurs.
my_str = '10' my_num = 5 # ⛔️ TypeError: unsupported operand type(s) for /: 'str' and 'int' result = my_str / my_num
We are trying to use the division operator with a string and a number.
To solve the error, we have to convert the string to a number (an int
or a
float
).
my_str = '10' my_num = 5 result = int(my_str) / my_num print(result) # 👉️ 2.0
We used the int()
class to convert the string to an integer before using the
division operator.
input()
built-in function, all of the values the user enters get converted to strings (even numeric values).If you have a float wrapped in a string, use the float()
class instead.
my_str = '10' my_num = 5 result = float(my_str) / my_num print(result) # 👉️ 2.0
The division operator /
always produces a float, if you need an integer, you
can use the floor division operator //
instead.
my_str = '10' my_num = 5 result = int(my_str) // my_num print(result) # 👉️ 2
If you have a string that may also contain characters but you only need to
extract an integer, use the filter()
function to filter out all non-digits.
my_str = 'ab 1 cd 0' my_num_1 = int(''.join(filter(str.isdigit, my_str))) print(my_num_1) # 👉️ 10 my_num_2 = 5 result = my_num_1 / my_num_2 print(result) # 👉️ 2.0
The filter function takes a function and an iterable as arguments and constructs an iterator from the elements of the iterable for which the function returns a truthy value.
The str.isdigit
method returns True
if all characters in the string are digits and there is at
least 1 character, otherwise False
is returned.
int()
class to get an integer value.If you aren't sure what type a variable stores, use the built-in type()
class.
my_str_1 = '10' print(type(my_str_1)) # 👉️ <class 'str'> print(isinstance(my_str_1, str)) # 👉️ True my_int_1 = 2 print(type(my_int_1)) # 👉️ <class 'int'> print(isinstance(my_int_1, int)) # 👉️ True
The type class returns the type of an object.
The isinstance
function returns True
if the passed in object is an instance or a subclass of
the passed in class.