Ошибка индекса при попытке записи в текстовый файл - PullRequest
0 голосов
/ 25 сентября 2018

Я пишу программу для вывода чисел Фибоначчи до n=21 и записи их в текстовый файл в формате:

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 голосов
/ 25 сентября 2018

Вам необходимо сохранить данные массива в файл, используя функцию 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")
0 голосов
/ 25 сентября 2018

Я собираюсь притвориться, что это не домашнее задание.

В python более типичный способ записи текста в файл будет выглядеть примерно так::

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 должна использовать памятка , или, если вы хотите полностью отступить от задания и ничего не изучать, используйте закрытую форму .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...