Python Fibonacci Generator

Python Fibonacci Generator

I would use this method:

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

You are giving a too many meanings:

a = int(raw_input(Give amount: ))

vs.

a = fib()       

You wont run into the problem (as often) if you give your variables more descriptive names (3 different uses of the name a in 10 lines of code!):

amount = int(raw_input(Give amount: ))

and change range(a) to range(amount).

Python Fibonacci Generator

Since you are writing a generator, why not use two yields, to save doing the extra shuffle?

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

…..

Leave a Reply

Your email address will not be published.