Найти - Пользователи
Полная версия: Не могу найти. Старый Фибоначчи устал вращаться
Начало » Python для новичков » Не могу найти. Старый Фибоначчи устал вращаться
1
Jabutyf
в общем обучаюсь. Искал всюду взглянуть (сам я уже за 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 утра вожусь и пока на исходной можно сказать и остался.

Помогайте пацаны) благодарю заранее)
Jabutyf
вопрос стоит так, что мне нужно вращать фибоначчи до определенного момента) а он у меня застревает)
ajib6ept
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 через пробел

по запросу “фибоначчи python” в Google первая ссылка на http://py-algorithm.blogspot.ru/2011/04/blog-post_04.html откуда и взято решение
Jabutyf
спасибо))
Jabutyf
единственное, я не понял эту манеру синтаксиса. a, b = 0, 1, a, b = b, a + b
ajib6ept
Запись в сокращенном виде
 a, b = 0, 1
#т.е.
a = 0
b = 1
a, b = b, a + b
#т.е.
a = b
b = a+b
Jabutyf
я так изначально и понял, но почему-то когда я выполнял схожую функцию и расписал ее именно в такой последовательности, она почему-то не работала. А в a,b=b,a+b работала… видимо шведскую стенку пора покупать с молотком
Jabutyf
ееее
сам написал в итоге так
def fibn(n):
  a,b=0,1
  while a<n:
    print a,
    a,b=b,a+b
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