python3和python2之间的相同代码的不同运行结果

时间:2018-06-08 08:00:37

标签: python python-3.x variables floating-point iteration

当我在python3中运行这个python代码时,它显示了python2的不同结果?为什么有不同的价值观?

    d = 0
    x1 = 0
    x2 = 1
    y1 = 1
    e=125
    phi=238
    temp_phi = phi

    while e > 0:
        print (e, temp_phi)
        temp1 = temp_phi / e
        print (temp1)
        temp2 = temp_phi - temp1 * e
        print (temp2)
        temp_phi = e
        e = temp2

        x = x2 - temp1 * x1
        y = d - temp1 * y1

        x2 = x1
        x1 = x
        d = y1
        y1 = y
    print (d + phi)
    if temp_phi == 1:
         print (d + phi)

2 个答案:

答案 0 :(得分:0)

在Python 2和3中运行时值的更改原因是<a href="{{url('/')}}">Index</a> <a href="{{url('about')}}">About</a> 运算符的运行方式不同,具体取决于运行程序的版本。这可以在PEP 238中读取。详细说明了在python 3中发生的变化

为确保在python 2和3中都能获得相同的结果,请在使用python 2时使用以下import语句:

/

这可确保您的代码与两个版本的python兼容。

答案 1 :(得分:0)

问题在于这一行:

temp1 = temp_phi / e

在Python 2中,/运算符在其参数都是整数时执行整数除法。也就是说,它(概念上)等于 floor(float(a)/ float(b)),其中 a b 是其整数参数。在Python 3中,/是浮点除法,无论其参数的类型如何,/运算符都会重新创建来自Python 2的//的行为。