Rezn0v
Rezn0v

Reputation: 23

TypeError: can't multiply sequence by non-int of type 'float', I can't figure out

This is that piece of code I wrote:

#This is the first ever piece of code I/'m Writing here
#This calculates the value after applying GST
#Example: here we are applying on a smartphone costing 10000
Cost = input('Enter the MRP of device here ')

Tax = 0.12
Discount = 0.05

Cost = Cost + Cost * float(Tax)
Total = Cost + Cost * float(Discount)

print(Total)

Whenever I try to execute the code it gives an exception after input:

TypeError: can't multiply sequence by non-int of type 'float'

Upvotes: 2

Views: 801

Answers (2)

Ryan Haining
Ryan Haining

Reputation: 36802

There's a few weird parts here I'll try to break them down. The first is the one you are actually asking about which is caused by input returning a string, so you are effectively doing something like this. I'm going to lowercase the variable names to match python style

cost = "2.50"
tax = 0.12
#...
cost * tax # multiplying str and float

Fix this by wrapping the call to input with a call to float to convert the str

cost = float(input('Enter the MRP of device here '))
tax = 0.12
discount = 0.5

next you have these extra calls float(tax) and float(discount). Since both of these are floats already, you don't need this.

There is also a shorthand syntax for x = x + y which is x += y with these two things in mind, you can adjust your calculation lines:

cost += cost * tax
cost += cost * discount
print(cost)

Upvotes: 1

Eliethesaiyan
Eliethesaiyan

Reputation: 2322

raw input is as string,cast it into float

Cost = input('Enter the MRP of device here ')
Cost=float(Cost)
Tax = 0.12
Discount = 0.05

Cost = Cost + Cost * float(Tax)
Total = Cost + Cost * float(Discount)

print(Total)

Upvotes: 1

Related Questions