我正在计算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
答案 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时将其输出到文件中。