实验室:计算折扣
Lab: calculate discounts
我正在做一个练习,到目前为止代码(在其他线程的一些帮助之后)现在可以工作 几乎 很好,但是......无法得到从数学角度来看正确的结果。
这是代码:
#getting base prices from user
item1 = float(input('Enter the price of the first item: '))
item2 = float(input('Enter the price of the second item: '))
clubc = raw_input('Does customer have a club card? (Y/N): ')
tax = float(input('Enter tax rate, e.g. 5.5 for 5.5% tax: '))
basep = (item1 + item2)
print('Base price = ', basep)
#setting variables for calculation
addtax = (1 + (tax / 100))
#conditions for output
if item1 >= item2 and clubc == 'N':
priceafterd = float(item1 + (item2 / 2))
print('Price after discounts = ', priceafterd)
totalprice = (priceafterd * addtax)
print('Total price = ', totalprice)
elif item2 >= item1 and clubc == 'N':
priceafterd = float(item2 + (item1 / 2))
print('Price after discounts = ', priceafterd)
totalprice = (priceafterd * addtax)
print('Total price = ', totalprice)
if item1 >= item2 and clubc == 'Y':
priceafterd = float((item1 + (item2 / 2)) * 0.9)
print('Price after discounts = ', priceafterd)
totalprice = (priceafterd * var3)
print('Total price = ' + totalprice)
else:
priceafterd = float((item2 + (item1 / 2)) * 0.9)
print('Price after discounts = ', priceafterd)
totalprice = (priceafterd * var3)
print('Total price = ' + totalprice)
该练习要求编写一个程序,计算客户在购买两件商品后需要支付多少钱,具体取决于促销、俱乐部卡和税费。
问题在于结果。作为输入示例:
Enter price of the first item: 10
Enter price of the second item: 20
Does customer have a club card? (Y/N): y
Enter tax rate, e.g. 5.5 for 5.5% tax: 8.25
Base price = 30.00
Price after discounts = 22.50
Total price = 24.36
相反,我得到了:
line 33, in <module>
print('Total price = ' + totalprice)
TypeError: cannot concatenate 'str' and 'float' objects
语法有什么问题?非常感谢!
问题
在第二个条件中,您写了 print('Total price = ' + totalprice)
行而不是 print('Total price = ', totalprice)
,问题在于:
totalprice
有 float
类型,同时 'Total price = '
是 str
并且你想要做的几乎像 str() + float()
,因为 python 不知道如何连接字符串和浮点数会引发异常。
如何解决
1) 到处使用相同的 print('Total price = ', totalprice)
行
Why does it work and print('Total price = ' + totalprice)
does not?
因为print
自动将所有内容转换为字符串表示,你可以想象print('Total price = ', totalprice)
这样的表达式:
print(str('Total price = ') + " " + str(totalprice))
2) 将float
转换为str
并拼接str
s
print('Total price = ' + str(totalprice))
str(totalprice)
将 totalprice
从 float
转换为 str
并且 python 知道如何将字符串连接在一起。
3) 格式化
"Total price = {}".format(3.14)"
相当于"Total price = 3.14"
字符串,
所以 print("Total price = {}".format(totalprice))
也可以工作
在 python 3 我们也有 f-stings:
f"Total price = {3.14}" == "Total price = 3.14"
print(f"Total price = {totalprice}")
我正在做一个练习,到目前为止代码(在其他线程的一些帮助之后)现在可以工作 几乎 很好,但是......无法得到从数学角度来看正确的结果。
这是代码:
#getting base prices from user
item1 = float(input('Enter the price of the first item: '))
item2 = float(input('Enter the price of the second item: '))
clubc = raw_input('Does customer have a club card? (Y/N): ')
tax = float(input('Enter tax rate, e.g. 5.5 for 5.5% tax: '))
basep = (item1 + item2)
print('Base price = ', basep)
#setting variables for calculation
addtax = (1 + (tax / 100))
#conditions for output
if item1 >= item2 and clubc == 'N':
priceafterd = float(item1 + (item2 / 2))
print('Price after discounts = ', priceafterd)
totalprice = (priceafterd * addtax)
print('Total price = ', totalprice)
elif item2 >= item1 and clubc == 'N':
priceafterd = float(item2 + (item1 / 2))
print('Price after discounts = ', priceafterd)
totalprice = (priceafterd * addtax)
print('Total price = ', totalprice)
if item1 >= item2 and clubc == 'Y':
priceafterd = float((item1 + (item2 / 2)) * 0.9)
print('Price after discounts = ', priceafterd)
totalprice = (priceafterd * var3)
print('Total price = ' + totalprice)
else:
priceafterd = float((item2 + (item1 / 2)) * 0.9)
print('Price after discounts = ', priceafterd)
totalprice = (priceafterd * var3)
print('Total price = ' + totalprice)
该练习要求编写一个程序,计算客户在购买两件商品后需要支付多少钱,具体取决于促销、俱乐部卡和税费。
问题在于结果。作为输入示例:
Enter price of the first item: 10
Enter price of the second item: 20
Does customer have a club card? (Y/N): y
Enter tax rate, e.g. 5.5 for 5.5% tax: 8.25
Base price = 30.00
Price after discounts = 22.50
Total price = 24.36
相反,我得到了:
line 33, in <module>
print('Total price = ' + totalprice)
TypeError: cannot concatenate 'str' and 'float' objects
语法有什么问题?非常感谢!
问题
在第二个条件中,您写了 print('Total price = ' + totalprice)
行而不是 print('Total price = ', totalprice)
,问题在于:
totalprice
有 float
类型,同时 'Total price = '
是 str
并且你想要做的几乎像 str() + float()
,因为 python 不知道如何连接字符串和浮点数会引发异常。
如何解决
1) 到处使用相同的 print('Total price = ', totalprice)
行
Why does it work and
print('Total price = ' + totalprice)
does not?
因为print
自动将所有内容转换为字符串表示,你可以想象print('Total price = ', totalprice)
这样的表达式:
print(str('Total price = ') + " " + str(totalprice))
2) 将float
转换为str
并拼接str
s
print('Total price = ' + str(totalprice))
str(totalprice)
将 totalprice
从 float
转换为 str
并且 python 知道如何将字符串连接在一起。
3) 格式化
"Total price = {}".format(3.14)"
相当于"Total price = 3.14"
字符串,
所以 print("Total price = {}".format(totalprice))
也可以工作
在 python 3 我们也有 f-stings:
f"Total price = {3.14}" == "Total price = 3.14"
print(f"Total price = {totalprice}")