python基本代码打印方式不同

时间:2017-03-02 14:11:21

标签: python

[基本上,视频的教授正在测试完全相同的基本代码,但是他的一个是打印出来的" Odd"而我的python程序被打印出来了#34; Even"哪个应该打印"偶数"为什么在使用完全相同的代码时打印的方式不同?

视频链接位于https://youtu.be/Pij6J0HsYFA?t=1942] 1

x = 15
if (x/2)*2 == x:
    print('Even')
else: print('Odd')

3 个答案:

答案 0 :(得分:5)

整数除法在Python 2.7和Python 3.X中表现不同。

C:\Users\Kevin\Desktop>py -2
Python 2.7.11 (v2.7.11:6d1b6a68f775, Dec  5 2015, 20:32:19) [MSC v.1500 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> 15/2
7
>>> (15/2)*2
14
>>> ^Z


C:\Users\Kevin\Desktop>py -3
Python 3.5.1 (v3.5.1:37a07cee5969, Dec  6 2015, 01:38:48) [MSC v.1900 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> 15/2
7.5
>>> (15/2)*2
15.0
>>>

教授可能正在使用2.7,你可能正在使用3.X。

在任何情况下,使用模数来检查数字的均匀性要好得多,因为它不依赖于特定于版本的行为。

>>> def is_even(x):
...     return x%2 == 0
...
>>> is_even(15)
False
>>> is_even(16)
True
>>> is_even(17)
False

答案 1 :(得分:1)

区别在于Python2和Python3。

在Python 3.0中,5/2将返回2.5。在Python2中相同将生成2。

前者是floating point division and other integer division.

在您提到的代码中,(15/2)*2 is 14 as 7是作为底值而不是7.5(不等于15)生成的。因此,由于Odd,它将打印python2

另一方面,由于浮点精度,您的代码将生成(15/2)*2 as 15,并由于Even.而显示python3

答案 2 :(得分:0)

因为讲师正在使用Py2,而你正在使用Py3。

在Python 2中,除以整数的结果是一个整数,它被截断:15 / 2 == 7。自7 * 2 != 15以来,讲师打印Odd

在Python 3中,如果需要保留实际值,则整数除以的结果是浮点数:15 / 2 == 7.5,因此您打印Even

保留结果类型和底限的等效Py3操作是15 // 2 == 7