Форум сайта python.su
в общем обучаюсь. Искал всюду взглянуть (сам я уже за 5 часов устал пробовать) как реализовать последовательность. В основном, где я встречал код - там был тип когда функция строилась с введенного значения, то есть не на оригинальной последовательности.
Собственно в чем вопрос. Не получается зациклить последовательность.
строю def fibon(n). где n это максимальное число в последовательности. То есть определяю переменные а=0, б=1 и если n больше единицы, то начинаю принтом выводить. а+б=с, если c<n то a=b, b=c и так же принтом вывожу. Смысл такой (задание было другое, просто решил покреативить)
необходимо, чтобы при указании значения скажем fibbo(2000) была такая реакция
1
1
2
3
5
8
…
1597 end
в идеале хотелось бы их еще пронумеровать. чтобы было ясно, какое это число по счету. В общем с 4 утра вожусь и пока на исходной можно сказать и остался.
Помогайте пацаны) благодарю заранее)
Офлайн
вопрос стоит так, что мне нужно вращать фибоначчи до определенного момента) а он у меня застревает)
Офлайн
def fibonacci(max):# генератор (а не функция, т.к. оператор return заменён на yield) a, b = 0, 1 while a < max: yield a# return a, + запоминаем место рестарта для следующего вызова a, b = b, a + b# параллельное присваивание, которое выполняется одновременно и параллельно for n in fibonacci(100): # используем генератор fibonacci() как итератор print n, # печатаем все числа Фибоначчи меньшие 100 через пробел
Офлайн
спасибо))
Офлайн
единственное, я не понял эту манеру синтаксиса. a, b = 0, 1, a, b = b, a + b
Офлайн
Запись в сокращенном виде
a, b = 0, 1 #т.е. a = 0 b = 1 a, b = b, a + b #т.е. a = b b = a+b
Офлайн
я так изначально и понял, но почему-то когда я выполнял схожую функцию и расписал ее именно в такой последовательности, она почему-то не работала. А в a,b=b,a+b работала… видимо шведскую стенку пора покупать с молотком
Офлайн
ееее
сам написал в итоге так
def fibn(n): a,b=0,1 while a<n: print a, a,b=b,a+b
Офлайн