考虑这个表达式3 + 2 + 1 - 5 + 4 % 2 - 1 / 4 + 6
。
DuckDuckGo将其评估为6.75
(与Google一样)。
Python 2将其评估为7:</ p>
$ python
Python 2.7.5 (default, Mar 9 2014, 22:15:05)
[GCC 4.2.1 Compatible Apple LLVM 5.0 (clang-500.0.68)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> print 3 + 2 + 1 - 5 + 4 % 2 - 1 / 4 + 6
7
>>> ^D
Python 3将其评估为6.75:
$ python3
Python 3.4.0 (default, Apr 9 2014, 11:51:10)
[GCC 4.2.1 Compatible Apple LLVM 5.1 (clang-503.0.38)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> print(3 + 2 + 1 - 5 + 4 % 2 - 1 / 4 + 6)
6.75
>>>`enter code here`
为什么Python 2评估为7而Python 3评估为6.75?
Python如何得出结果?
答案 0 :(得分:3)
在py2中,对于整数,1 / 4-> 0,在py3 1 / 4-> 0.25中。您可以在py2
中使用显式true除法3 + 2 + 1 - 5 + 4 % 2 - 1. / 4 + 6 # note the decimal point
或者你可以做一个
from __future__ import division
使用py3行为。
答案 1 :(得分:0)
Python 2.x中的整数除法截断。
Python没有忘记如何做数学,你只需要有时给它更多的指令。如果您对表达式进行简单的更改打印3 + 2 + 1 - 5 + 4%2 - 1.00 / 4 + 6
你应该得到你的6.75