python中的简单数学不起作用?

时间:2014-02-20 19:08:56

标签: python math

我刚开始学习python,我写了这三行代码:

points = 49
total = points / 50 * 500 + 40
print "omg wtf ", total

我希望输出类似530,但相反,无论我做什么,我都会得到40.我尝试将total初始化为0,将赋值转换为int,我抛出了一些括号,但没有任何作用。我很困惑......有人可以帮我/告诉我发生了什么事吗?

3 个答案:

答案 0 :(得分:6)

“我刚开始学习Python ......”太棒了。我是在1.5年前自己这样做的。这是一种有趣的语言和良好的社区。

我的强烈建议您只需切换到python3即可。我自己也快乐。

在这种情况下,您会看到530,就像您预期的那样。在这种情况下,您可以更改最后一行以包括括号,例如:

print("omg wtf", total)

答案 1 :(得分:5)

在Python 2中,在两个整数上使用除法运算符/会通过截断结果来返回整数。所以49/50评估为零。

我的建议是始终在您编写的每段代码的顶部使用from __future__ import division,这会消除这种令人困惑的行为。

您也可以使用浮点数来修复它,例如使用points成为49.0或执行total = float(points) / 50 * 500 + 40。但是,这些要求您记住每次计算都要这样做。因为Python 3中的行为已经改变,所以前瞻性的方法是使用from __future__ import division使浮点除法成为默认值。

答案 2 :(得分:2)

当输入为整数时,Python 2.7及更早版本使用整数数学。所以49 / 50 = 0。使一个浮点数得到你想要的输出:

points = 49.  # <-- adding a dot

points = float(49)  # wrapping in float()

现在你得到:

>>> total = points / 50 * 500 + 40
>>> print "omg wtf ", total
530.0