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

use*_*758 3 python math

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

points = 49
total = points / 50 * 500 + 40
print "omg wtf ", total
Run Code Online (Sandbox Code Playgroud)

而且我预计输出会像530一样,但相反,无论我做什么,我都会得到40.我尝试将total初始化为0,将赋值转换为int,我抛出一个括号括号,但没有任何效果.我很困惑......有人可以帮我/告诉我到底发生了什么事吗?

Tra*_*ggs 6

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

强烈建议你只需切换到python3.我自己也快乐了.

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

print("omg wtf", total)
Run Code Online (Sandbox Code Playgroud)


Bre*_*arn 5

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

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

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