Найти - Пользователи
Полная версия: Подскажите
Начало » Python для новичков » Подскажите
1
Malinaizer
вот функция числа фибоначчи, почему если сделать как во втором варианте то не соблюдается условия цикла, и вообще не понятно какое условие тогда соблюдается? и как вообще лучше реализовать эту функцию что бы ее можно было передавать в такие функции как 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
PooH
def fib(n):
a, b = 0, 1
for i in xrange(0, n):
yield b
a, b = b, a+b
Malinaizer
PooH
def fib(n):
a, b = 0, 1
for i in xrange(0, n):
yield b
a, b = b, a+b
и что это, ты ее сам проверял?
Ferroman
Человек просто не знает что такое итераторы и генераторы.
Malinaizer
pasaranax
даже на вики аналогичный вариант
Объясните пожалуйста наглядно как ей пользоваться, что такое генераторы и итераторы я знаю но знать это не достаточно надо понимать как и что!
def fib(n):
a, b = 0, 1
for i in xrange(0, n):
yield b
a, b = b, a+b

она же не работает вот так:
sum(fib(100) и вот так

for i in fib(100):
print i

а вот эта работает
def fibf(n):
a,b=0,1
lst=
while b<n:
lst.append(b)
a,b=b,a+b
return lst

sum(fibf(100)
PooH
Извини, я маленько не дочитал твою задачу, та функция, что я тебе написал вычисляет 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 с генераторами не применим, потому как длины не имеют, придется в список запихавать:
len(list(fib(100)))
11
Зато и памяти лишней не кушают, новое значение только по требованию генерируется, можно и бесконечный ряд генерировать.
Malinaizer
PooH
ну так первый же пример не работал а теперь другое дело спасибо за объяснения!
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB