0

只是坚持这个问题,我已经尝试了很多方法,但这就是我到目前为止所拥有的。不知道有什么问题。

def main(n):
    summ=0
    pipe=0
    for i in range(1, n, 4):
        x = 4/i
        summ = summ + x
    for j in range(3, n, 4):
        y = 4/j
        pipe = pipe + j
    ans = summ - pipe
    print(ans)

它给了我疯狂的数字......不明白为什么:(

4

2 回答 2

1
    pipe = pipe + j

应该y改为添加。j是循环变量,而不是您要添加的变量。

于 2012-11-26T18:03:11.917 回答
0

有更多可读的方法来编码你正在做的事情;这就是我将如何做到的。首先定义进程,然后定义操作。当提供数字的对象用完要提供的数字时,让函数退出。在这种情况下,您无需担心保留pipe变量,也无需担心制作两个不同的列表来保存正负减法。

def pi(n):
    ''' returns approximations of pi. '''
    result = 0
    odd_numbers = xgen(1, n, 2)
    while True:
        try:
            result += 4.0/odd_numbers.next()
            result -= 4.0/odd_numbers.next()
        except StopIteration:
            break
    return result

def xgen(start, stop, step):
    ''' turns an xrange into an actual generator. '''
    for i in xrange(start, stop, step):
        yield i
于 2012-11-26T18:39:36.590 回答