如何保存不确定的数字(直到已经计算的点)

时间:2014-04-29 15:01:03

标签: python python-2.7 save pi

我正在计算pi并且我正在使用的脚本在某个点之后没有停止,并且由于Python在某个点之后丢失了您的输入,我想知道如何保存我计算的所有内容。这是我正在使用的脚本:编辑:我发现这个,调整它,并且想知道如何保存后,我仍然是python的新手,我已经学会了保存到文件的obvios节省。

def calcPi():
    q, r, t, k, n, l = 1, 0, 1, 1, 3, 3
    while True:
        if (4*q+r-t < n*t):
            yield n
            nr = 10*(r-n*t)
            n  = ((10*(3*q+r))//t)-10*n
            q  *= 10
            r  = nr
        else:
            nr = (2*q+r)*l
            nn = (q*(7*k)+2+(r*l))//(t*l)
            q  *= k
            t  *= l
            l  += 2
            k += 1
            n  = nn
            r  = nr

import sys
pi_digits = calcPi()
i = 0
for d in pi_digits:
    sys.stdout.write(str(d))
    i   += 1
    if i == 40: 
       print("")
       i = 0

1 个答案:

答案 0 :(得分:1)

我知道的唯一方法是将输出写入文件。下面修改后的代码打开一个文件pi_out.txt,将pi的前100位写入,然后在最后关闭文件。

import sys

def calcPi():
q, r, t, k, n, l = 1, 0, 1, 1, 3, 3
while True:
    if 4*q+r-t < n*t:
        yield n
        nr = 10*(r-n*t)
        n  = ((10*(3*q+r))//t)-10*n
        q  *= 10
        r  = nr
    else:
        nr = (2*q+r)*l
        nn = (q*(7*k)+2+(r*l))//(t*l)
        q  *= k
        t  *= l
        l  += 2
        k += 1
        n  = nn
        r  = nr

pi_digits = calcPi()
pi_out = open('pi_out.txt','w')

i = 0
j = 0 #number of digits of pi to find and output
for d in pi_digits:
    sys.stdout.write(str(d))
    print >> pi_out, d
    i   += 1
    j   += 1
    if i == 40: print(""); i = 0
    if j == 100: break #breaks loop after finding appropriate digits of pi

pi_out.close() #IMPORTANT Always close files

或者你可以直接在函数内部执行此操作,并在每次调用yield时将其输出到文件中。