为什么这个函数在python 2.7中不起作用,但在python 3.6中工作正常?

时间:2018-04-08 21:32:55

标签: python python-3.x python-2.7

我不确定为什么函数在使用python 2.7运行时为n的所有值保持返回4,它在3.6中工作正常。 例如:aproxpi(1)应为2.6666,aproxpi(2)应为3.466666。

x = 1
y = 0
pi = 0
def aproxpi(n):
    global x, y, pi
    if n <= 0:
        if y % 2 == 0:
            pi += (float(1 / x))
        else:
            pi -= (float(1 / x))
        x = 1
        y = 0
        pi2 = pi
        pi = 0
        return 4 * pi2
    n -= 1
    if y % 2 == 0:
        y += 1
        pi += (float(1 / x))
        x += 2
    else:
        y += 1
        pi -= (float(1 / x))
        x += 2
    return aproxpi(n)

1 个答案:

答案 0 :(得分:5)

您正在Python 2中运行此程序,默认情况下除法是整数除法。

将此行添加到程序的开头:

from __future__ import division

这将使分工更接近你所期望的。