尝试写入文本文件时出现索引错误

时间:2018-09-25 04:56:43

标签: python numpy

我正在编写一个程序,以列出最多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:元组索引超出范围

2 个答案:

答案 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")