2024-05-15 21:31:46 发布
网友
我需要做一个程序,要求打印的斐波那契数的数量,然后打印他们像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(),
我会用这种方法:
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
a = int(raw_input('Give amount: '))
与
a = fib()
如果给变量指定更具描述性的名称(在10行代码中使用3种不同的名称a),就不会遇到这个问题(通常如此!)以下内容:
amount = int(raw_input('Give amount: '))
把range(a)改成range(amount)。
range(a)
range(amount)
我会用这种方法:
Python 2
Python 3
既然你在写一个生成器,为什么不使用两个收益率,以节省额外的洗牌?
。。。。。
你给了
a
太多的含义:与
如果给变量指定更具描述性的名称(在10行代码中使用3种不同的名称
a
),就不会遇到这个问题(通常如此!)以下内容:把
range(a)
改成range(amount)
。相关问题 更多 >
编程相关推荐