我遇到一个问题,要求我编写一行的python代码来执行以下操作:
Calculate the total cost of an item whose original price is $10. You have a 30% discount on it and have to pay 5% state tax. The shipping would cost $7.5.
以下是我的想法:
10 - (10 * 30 / 100) + (10 - (10 * 30 / 100)) * 5 / 100 + 7.5
正如您所看到的,我在上面的代码中计算了两次减少30%的两次。我可以使用变量来保存10 - (10 * 30 / 100)
,但正如问题陈述所说,我需要在一行中执行此操作。是否有更好的(读取 pythonic )方法来实现这一目标?
这个问题来自Sam在24小时内自学Python的书,顺便说一句(对不起!)。
答案 0 :(得分:0)
只需使用基本的数学运算:
print ((0.7*100)*1.05)+7.5
#81.0
答案 1 :(得分:0)
您可以在单行中使用变量,但您可以像这样简化解决方案。
print 10 * 0.7 * 1.05 + 7.5
编辑: 正如我在评论中提到的,我发布的代码就是您所需要的。做一些比这更复杂的事情不仅仅是一种智力锻炼。
例如......
print map(lambda x: x + 7.5, map(lambda x: x*1.05, map(lambda x: x*.7, [10])))[0]
答案 2 :(得分:0)
int/int
可能会失去精确度。您需要divide by 100.0
或float(100)
而非100
才能获得正确的结果。或插入此代码from __future__ import division
。
In [17]: 10 - (10 * 30 / 100) + (10 - (10 * 30 / 100)) * 5 / 100 + 7.5
Out[17]: 14.5
In [19]: from __future__ import division
In [20]: 10 - (10 * 30 / 100) + (10 - (10 * 30 / 100)) * 5 / 100 + 7.5
Out[20]: 14.85