списки и для синтаксиса цикла - PullRequest
0 голосов
/ 22 марта 2019

поэтому я начинающий программист и пытаюсь построить программу на python для вывода последовательности Фибоначчи. мой код выглядит следующим образом:

fib_sequence = [0,1,1]

def fib_add(x):
   fib_seq.insert(x, int(fibseq[x-1]+fibseq[x-2])

for n in range(2,10):
   fib_add(n)
   print(fib_seq)

программа говорит, что в двоеточии на

есть синтаксическая ошибка
for n in range(2,10):

Я не знаю, как это исправить

Ответы [ 5 ]

1 голос
/ 22 марта 2019

Интересно, что не , где синтаксическая ошибка.Проблема заключается в предыдущей строке:

   fib_seq.insert(x, int(fibseq[x-1]+fibseq[x-2]))

В этой строке отсутствовали закрывающие скобки.В таких случаях происходит то, что, поскольку круглые скобки не были закрыты, интерпретатор Python продолжает искать дополнительные элементы для выражения.Он достигает for в следующей строке и продолжается вплоть до двоеточия.На данный момент есть способ продолжить код, который все еще действителен.

Затем , он попадает в двоеточие.Не существует допустимого синтаксиса Python, который допускает двоеточие, поэтому он останавливается и выдает ошибку на первом токене, который объективно находится в неправильном месте.Однако с точки зрения вашего намерения мы можем видеть, что ошибка фактически была допущена ранее.

Кроме того, как отмечалось в комментарии, ваш исходный list был назван fib_sequence, в то время как в остальных вашихкод, на который вы ссылаетесь fib_list.Это поднимет NameError.

0 голосов
/ 22 марта 2019

У вас есть две ошибки:

  1. fib_sequence, fib_seq, fibseq несовместимы.
  2. Вы пропустили ) в строке4
0 голосов
/ 22 марта 2019

Хотя у вас есть несколько полезных ответов, вы можете посмотреть на генераторы, они делают Python мощным языком:

def fibonacci():
    x, y = 0, 1
    while True:
        yield x
        x, y = y, x + y

for x in fibonacci():
    if x >= 10:
        break
    print(x)

Это печатает

0
1
1
2
3
5
8
0 голосов
/ 22 марта 2019

Вот исправленный код:

fib_seq = [0,1,1]

def fib_add(x):
   fib_seq.insert(x, int(fib_seq[x-1]+fib_seq[x-2]))

for n in range(3,10):
   fib_add(n)
   print(fib_seq)

Результирующий вывод:

[0, 1, 1, 2]
[0, 1, 1, 2, 3]
[0, 1, 1, 2, 3, 5]
[0, 1, 1, 2, 3, 5, 8]
[0, 1, 1, 2, 3, 5, 8, 13]
[0, 1, 1, 2, 3, 5, 8, 13, 21]
[0, 1, 1, 2, 3, 5, 8, 13, 21, 34]
0 голосов
/ 22 марта 2019

Вы должны поместить свой код цикла внутри main. Также, как предполагает другой ответ, вы должны добавить еще одну скобку после

fib_seq.insert(x, int(fibseq[x-1]+fibseq[x-2]))

if __name__ == '__main__':
   for n in range(2,10):
   fib_add(n)
   print(fib_seq)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...