In today’s short tutorial we’ll help you troubleshoot a type error that you might receive when trying to multiply a sequence (strings, lists or tuples) by a float number in Python.
Can’t multiple sequence by float error
Let’s run the following code:
#this will result in a string
product_price = input ("Enter the product price")
#this is a floating number
order_discount = 0.1
total_cost = product_price * order_discount
print (total_cost)
After entering the product price, as expected, we’ll get the following error:
TypeError: can't multiply sequence by non-int of type 'float'
Fixing the error
The meaning of the error we got is that although Python is able to multiple a string by an integer, it can’t obviously multiple it by a float number.
Luckily, fixing this is quite simple, we can cast the product_price variable into a float:
product_price = float (input ("Enter the product price"))
order_discount = 0.1
total_cost = product_price * order_discount
print (total_cost)
Multiplying a list sequence by a float number
Similar to strings and tuples, lists are also considered a sequence object in Python. Hence trying to multiply a list by a float will also throw a type error.
Run the following code:
my_list = [1,2,3,4]
order_discount= 0.1
my_list*order_discount
You can fix this using the numpy library array object:
# first off, import Numpy to your workspace
import numpy as np
# convert the list to an array
my_array = np.array(my_list)
order_discount= 0.1
# multiply the array by the float
my_array*order_discount
And the result will be:
array([0.1, 0.2, 0.3, 0.4])