用Python正确编写一行数学表达式

用Python正确编写一行数学表达式,python,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 / 1

我遇到一个问题,要求我编写一行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
正如你所看到的,我在上面的代码中计算了两次10减去30%。我可以使用一个变量来保存
10-(10*30/100)
,但正如问题陈述所说的,我需要在一行中执行它。有没有更好的方法来实现这一点


这个问题来自Sam的《24小时自学Python》一书,顺便说一句(对不起!)。

只需使用基本的数学运算:

print ((0.7*100)*1.05)+7.5
#81.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]

int/int
可能会失去精度。您需要将
除以100.0
float(100)
而不是只除以
100
,才能得到正确的结果。或者从_ufuture _uu导入部门插入此代码

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

这更像是一个数学问题,而不是Python问题。把你的表情分解!另外,你不可能在24小时内完全学会任何语言……print((10*.7)*1.05+7.5)@MattiVirkkunen我当然可以使用因子分解,但这不是重点。我甚至可以预先计算百分比值(就像下面许多人建议的那样)。但我想用代码来做这件事,不想用数学技巧(我想学习python而不是数学)。所以这似乎不是一个数学问题。或者使用Python3,其中int->float转换是默认行为。你能告诉我怎么做吗?对不起,这里总共是n00b。我发布的代码就是你所需要的。做任何比这更复杂的事情都不会比智力练习更有用。我知道,但我只是好奇如何在一行中定义和使用变量。