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])