I am working on a simple routine in Python which conditionally applies a discount to a monetary amount so long as it is above a certain threshold:
money = input("how much are you paying ")
discount = 0.2
num = 20
float(money)
payment = money*discount
if money > num:
print("you are paying " money)
else:
print("you are paying " payment )
However, the above code is not working as expected with an error thrown from the line:
payment = money*discount
Could anyone please advise as to what I'm doing wrong?
CodePudding user response:
You aren't assigning float(money)
to anything.
With minimal changes to your existing code, try:
money = float(input("how much are you paying "))
discount = 0.2
num = 20
payment = money*discount
if money > num:
print("you are paying " str(money))
else:
print("you are paying " str(payment))
Alternatively, you can reduce the last four lines of your code to a single line using f-strings:
money = float(input("how much are you paying "))
discount = 0.2
num = 20
payment = money*discount
print(f"you are paying {money if money>num else payment}")
CodePudding user response:
You can either directly take in the input as a float like this.
money = float(input("how much are you paying "))
Or assign the converted value into the money
variable.
money = float(money)
You also need to modify the print statements if you are not changing the type of money
and payment
to str
before concatenating them.
if money > num:
print("you are paying " , money)
else:
print("you are paying " , payment )
CodePudding user response:
1: You need to cast money
to float
so you can perform mathematical operations on it such as multiplication, you can do that by
money = float(input("..."))
2: You are adding a number to a string, You can't do print("you are paying " money)
because "you are paying"
is a string type and money
should be a number (after you follow my first comment), instead, you can remove the last space in the string so it would be "you are paying"
instead of "you are paying "
and then you can use print
's ability to concatenate items with a space in between: print("you are paying", money)
.
CodePudding user response:
You cannot calculate between a string and int type.
Try this and see for yourself :
money = input("how much are you paying ")
print(type(money))
...
So, you need to "cast" the variable "money".
money = input("how much are you paying ")
discount = 0.2
num = 20
cast_money = float(money)
payment = cast_money*discount
if cast_money > num:
print("you are paying " money)
else:
print("you are paying " payment )