Как уменьшить количество выходов? - PullRequest
0 голосов
/ 08 мая 2020

Предположим, я ввел n = 5, как мне получить на выходе первые 5 чисел, а не 10?

    #fibonacci sequence
n=int(input('Enter number of numbers: '))
a=1
b=0
for i in range(1,n+1):
    a=a+b
    b=a+b
    print(a)
    print(b)

Ответы [ 3 ]

1 голос
/ 08 мая 2020

То, как вы добавляете a и b в for l oop, неверно. Если вы используете print дважды, он будет печатать дважды на l oop.

n=int(input('Enter number of numbers: '))
a=1
b=0
for i in range(1,n+1):
    a, b = a + b, a
    print(a)
0 голосов
/ 08 мая 2020
n=int(input('Enter number of numbers: '))
a=1
b=0
for i in range(1,n+1):
    a, b = a + b, a
    print(a)

Проблема с вашим подходом состоит в том, что вы go каждый раз выполняете шаг 2. Например, на одной итерации вы go от a=5, b=3 до a=13, b=8. Итак, выходов 2 * 5.

0 голосов
/ 08 мая 2020

Попробуйте это:

n = int(input('Enter number of numbers: '))
def fib(n):
    curr, next_ = 1, 1
    for _ in range(n):
        yield curr
        curr, next_ = next_, curr + next_
print(list(fib(n)))
...