我如何减少输出数量?

问题描述 投票:0回答:3

假设我输入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)
python python-3.x for-loop fibonacci
3个回答
1
投票

a循环中添加bfor的方式是错误的。如果您两次使用print,则每个循环将打印两次。

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
投票
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)

您的方法存在的问题是您每次都执行步骤2。例如,在一次迭代中,您从a=5, b=3转到a=13, b=8。因此有2 * 5输出。


0
投票

尝试一下:

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)))
© www.soinside.com 2019 - 2024. All rights reserved.