在Python中正确编写单行数学表达式

时间:2014-04-16 01:27:08

标签: python

我遇到一个问题,要求我编写一行的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的书,顺便说一句(对不起!)。

3 个答案:

答案 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.0float(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