python中的简单数学赢得';不行?

python中的简单数学赢得';不行?,python,math,Python,Math,我刚开始学习python,并编写了以下三行代码: points = 49 total = points / 50 * 500 + 40 print "omg wtf ", total 我期望输出是530左右,但不管我做什么,我总是得到40。我尝试将total初始化为0,将赋值转换为int,并插入了大量括号,但没有任何效果。我很困惑。。。有人能帮我/告诉我到底发生了什么吗?在Python 2中,对两个整数使用除法运算符/,通过截断结果返回一个整数。因此49/50的计算结果为零 我的建议是,在您编

我刚开始学习python,并编写了以下三行代码:

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

我期望输出是530左右,但不管我做什么,我总是得到40。我尝试将total初始化为0,将赋值转换为int,并插入了大量括号,但没有任何效果。我很困惑。。。有人能帮我/告诉我到底发生了什么吗?

在Python 2中,对两个整数使用除法运算符
/
,通过截断结果返回一个整数。因此
49/50
的计算结果为零

我的建议是,在您编写的每段代码的顶部,始终使用来自“未来”导入部门的
,这样可以消除这种令人困惑的行为


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

Python 2.7和更早版本在输入为整数时使用整数数学。所以
49/50=0
。将其中一个设为浮点以获得所需的输出:

points = 49.  # <-- adding a dot
现在您可以:

>>> total = points / 50 * 500 + 40
>>> print "omg wtf ", total
530.0
“我刚开始学习Python…”太棒了。我在1.5年前就这样做了。这是一种有趣的语言,也是一个很好的社区

我的strong建议您只需切换到
python3
。我自己也快乐多了

在这种情况下,您将看到
530
,正如您所期望的那样。在这种情况下,您会将最后一行更改为包含括号,例如:

print("omg wtf", total)

49/50是0,整数的底除法。谢谢。你能给我介绍一些好的python教程吗?我所看到的不是很有描述性……我在8个月前升级到Python3,但仍然需要从我的拼凑的
打印值
语句中调试
SyntaxError
s。@TravisGriggs,这是一个很好的建议,我要指出的是,在很多环境中,为了学习@mhlester?当然是为了在真空中学习,升级到3是不可能的。但是,例如,如果OP正在学习另一个使用嵌入式python进行脚本编写的程序,那么无论它使用什么,您都会被卡住
print("omg wtf", total)