fibonacci - How to get nth result from simple function in python? -
i apologize simplicity of question, have searched multiple times may simple hasn't been asked before.
i wrote fibonacci function prints every fibonacci number under 3000.
def fibonacci(): a, b = 0, 1 while b < 3000: a, b = b, + b print return
how can make returns first n fibonacci numbers?
also, how can make print nth value? example print [6], return 8. tried make string:
a = str(fibonacci()) print a[6]
but didn't work, , i'm not sure why. helping.
there several ways this; here's semi-clever one:
first, change print
yield
, function returns numbers instead of printing them:
def ifibonacci(): a, b = 0, 1 while b < 3000: a, b = b, + b yield
then use itertools.islice
slice out numbers want:
import itertools print list(itertools.islice(ifibonacci(), 10)) # prints [1, 1, 2, 3, 5, 8, 13, 21, 34, 55] print list(itertools.islice(ifibonacci(), 6, 6+1)) # prints [13] isn't quite right; see below
note function doesn't output the initial 0, indexes off one. fix that, move yield
1 line:
def ifibonacci(): a, b = 0, 1 while b < 3000: yield a, b = b, + b print list(itertools.islice(ifibonacci(), 6, 6+1)) # prints [8]
(also, still won't print numbers larger 3000. fixing left exercise)
Comments
Post a Comment