Python斐波那契根

2024-05-15 21:31:46 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要做一个程序,要求打印的斐波那契数的数量,然后打印他们像0,1,1,2。。。但我不能让它工作。我的代码如下:

a = int(raw_input('Give amount: '))

def fib():
    a, b = 0, 1
    while 1:
        yield a
        a, b = b, a + b

a = fib()
a.next()
0
for i in range(a):
    print a.next(),

Tags: 代码程序forinput数量rawdefamount
3条回答

我会用这种方法:

Python 2

a = int(raw_input('Give amount: '))

def fib(n):
    a, b = 0, 1
    for _ in xrange(n):
        yield a
        a, b = b, a + b

print list(fib(a))

Python 3

a = int(input('Give amount: '))

def fib(n):
    a, b = 0, 1
    for _ in range(n):
        yield a
        a, b = b, a + b

print(list(fib(a)))

既然你在写一个生成器,为什么不使用两个收益率,以节省额外的洗牌?

import itertools as it

num_iterations = int(raw_input('How many? '))
def fib():
    a,b = 0,1
    while True:
        yield a
        b = a+b
        yield b
        a = a+b

for x in it.islice(fib(), num_iterations):
    print x

。。。。。

你给了a太多的含义:

a = int(raw_input('Give amount: '))

a = fib()       

如果给变量指定更具描述性的名称(在10行代码中使用3种不同的名称a),就不会遇到这个问题(通常如此!)以下内容:

amount = int(raw_input('Give amount: '))

range(a)改成range(amount)

相关问题 更多 >