Форум сайта python.su
вот функция числа фибоначчи, почему если сделать как во втором варианте то не соблюдается условия цикла, и вообще не понятно какое условие тогда соблюдается? и как вообще лучше реализовать эту функцию что бы ее можно было передавать в такие функции как len, sum, max, min.
1)
def fibf(n):
a,b=0,1
lst=
while b<n:
lst.append(b)
a,b=b,a+b
return lst
2)
def fibf(n):
a,b=0,1
lst=
while b<n:
a,b=b,a+b
lst.append(b)
return lst
Офлайн
def fib(n):
a, b = 0, 1
for i in xrange(0, n):
yield b
a, b = b, a+b
Офлайн
PooHи что это, ты ее сам проверял?def fib(n):
a, b = 0, 1
for i in xrange(0, n):
yield b
a, b = b, a+b
Офлайн
Офлайн
Человек просто не знает что такое итераторы и генераторы.
Офлайн
pasaranaxОбъясните пожалуйста наглядно как ей пользоваться, что такое генераторы и итераторы я знаю но знать это не достаточно надо понимать как и что!
даже на вики аналогичный вариант
Офлайн
Извини, я маленько не дочитал твою задачу, та функция, что я тебе написал вычисляет n - первых членов ряда, для вычисления членов ряда не превышающих n функция будет выглядеть так:
def fib(n):
a, b = 0, 1
while b < n:
yield b
a, b = b, a+b
MalinaizerОбижаешь, начальник :)
она же не работает вот так:
sum(fib(100)
sum(fib(100))
232
Malinaizer
и вот так
for i in fib(100):
print i
for i in fib(100):
print i,
1 1 2 3 5 8 13 21 34 55 89
len(list(fib(100)))
11
Офлайн
PooHну так первый же пример не работал а теперь другое дело спасибо за объяснения!
Отредактировано (Ноя. 6, 2009 18:09:34)
Офлайн