我正在编写一个程序,以列出最多n=21
的斐波那契数字,并将其以以下格式写入txt文件:
n Fn
0 0
1 1
2 1 etc
我已经设法打印出所有数字,但是我无法将它们写入文件中。
我的代码是:
import numpy as np
def fib(n):
if n <= 1:
return n
else:
return fib(n-1) + fib(n-2)
n = 22
for i in range(n):
print(i, fib(i))
np.savetxt('fibonacci.txt',fib(i), header =" n Fn")
我也知道这段代码只会写Fn的值,但是我不知道如何以我正在寻找的格式写文件
此代码目前给我错误:
IndexError:元组索引超出范围
答案 0 :(得分:0)
我要假装这不是一项家庭作业。
在python中,更多的typical way to write text to a file类似于:
with open('myfile.txt', 'w') as F:
F.write('n\tFn\n')
for i in range(n):
F.write('{}\t{}\n'.format(i, fib(i)))
此外,您的fib
函数应使用memoization,或者,如果您想完全避开分配并且不了解任何内容,请使用closed form。
答案 1 :(得分:0)
使用np.savetext函数时,需要将数组数据保存到文件中。 试试这个:
import numpy as np
def fib(n):
if n <= 1:
return n
else:
return fib(n-1) + fib(n-2)
n = 22
data = []
for i in range(n):
row = []
row.append(i)
row.append(fib(i))
data.append(row)
print(data)
np.savetxt('fibonacci.txt',data, header =" n Fn")