2016-02-25 2 views
2

Я пытаюсь напечатать первые 12 чисел в Фибоначчи. Моя идея состоит в том, чтобы увеличить число индексов индекса.Индекс индекса приращения в цикле while

list = [0,1] #sets the first two numbers in the fibonacci sequence to be added, as well as the list i will append the next 10 numbers 

listint = list[0] #sets the list variable I want to incremented 
list2int = list[1] #set the other list variable to be incremented 

while len(list) < 13:  #sets my loop to stop when it has 12 numbers in it 
    x = listint + list2int  #calculates number at index 2 
    list.append(x)  #appends new number to list 
    listint += 1 #here is where it is supposed to be incrementing the index 
    list2int +=1 
print list 

Мой вывод:

[0, 1, 1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21] 

Я хочу:

0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89 

Пожалуйста, обратите внимание, что я новичок, и я пытаюсь сделать это без использования встроенных функций. (Я уверен, что есть какой-то генератор последовательности фибоначчи).

Заранее благодарим за вашу помощь!

+0

ли он работать в конце концов? –

ответ

0

изменение первая линия время цикла:

list = [0,1] #sets the first two numbers in the fibonacci sequence to be added, as well as the list i will append the next 10 numbers 

listint = list[0] #sets the list variable I want to incremented 
list2int = list[1] #set the other list variable to be incremented 

while len(list) < 12:  #sets my loop to stop when it has 12 numbers in it 
    x = list[listint] + list[list2int]  #calculates number at index 2 
    list.append(x)  #appends new number to list 
    listint += 1 #here is where it is supposed to be incrementing the index 
    list2int +=1 
print list 

Кроме того, чтобы получить 1-я 12 числа вы можете установить условие цикла While к < 12, поскольку индексы список Python начинаются с 0.

1

Проблема заключается в двух последних строках цикла while. Вы добавляете 1 каждый раз, вместо того, чтобы использовать последние два элемента списка, которые предыдущие числа Фибоначчи:

list = [0,1] #sets the first two numbers in the fibonacci sequence to be added, as well as the list i will append the next 10 numbers 

listint = list[0] #sets the list variable I want to incremented 
list2int = list[1] #set the other list variable to be incremented 

while len(list) < 13:  #sets my loop to stop when it has 12 numbers in it 
    x = listint + list2int  #calculates number at index 2 
    list.append(x)  #appends new number to list 
    listint = list[-2] #here is where it is supposed to be incrementing the index 
    list2int = list[-1] 
print list 
1
list = [0,1] 

while len(list) < 12: 
    list.append(list[len(list)-1]+list[len(list)-2]) 
print list 

Не очень производительный, но быстро и грязный. использовать < 12 потому что в 11-м цикле вы добавите 12-ю запись в список. С перечнем [x] вы получаете доступ к номеру x, начинающемуся с 0 для первой записи.

редактировать: выход

[0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89] 

 Смежные вопросы

  • Нет связанных вопросов^_^