我刚开始学习python,我写了这三行代码:
points = 49
total = points / 50 * 500 + 40
print "omg wtf ", total
Run Code Online (Sandbox Code Playgroud)
而且我预计输出会像530一样,但相反,无论我做什么,我都会得到40.我尝试将total初始化为0,将赋值转换为int,我抛出一个括号括号,但没有任何效果.我很困惑......有人可以帮我/告诉我到底发生了什么事吗?
"我刚刚开始学习Python ......"太棒了.我是在1.5年前自己这样做的.这是一种有趣的语言和良好的社区.
我强烈建议你只需切换到python3.我自己也快乐了.
在那种情况下,你会看到530,就像你期望的那样.在这种情况下,您可以更改最后一行以包括括号,例如:
print("omg wtf", total)
Run Code Online (Sandbox Code Playgroud)
在Python 2中,/在两个整数上使用除法运算符会通过截断结果来返回整数.所以49/50评估为零.
我的建议是始终from __future__ import division在你编写的每一段代码的顶部使用,这消除了这种令人困惑的行为.
您也可以使用浮点数来修复它,例如使用pointsbe 49.0或者执行total = float(points) / 50 * 500 + 40.但是,这些要求您记住每次计算都要这样做.因为Python 3中的行为已经改变,所以前瞻性的方法是使用from __future__ import division浮点除法作为默认值.
| 归档时间: |
|
| 查看次数: |
1140 次 |
| 最近记录: |