评估表达式“3 + 2 + 1 - 5 + 4%2 - 1/4 + 6`

时间:2014-07-23 20:13:00

标签: python python-2.7 python-3.4

考虑这个表达式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如何得出结果?

2 个答案:

答案 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