Уведомления

Группа в Telegram: @pythonsu

#1 Апрель 19, 2014 11:22:10

Jabutyf
Зарегистрирован: 2014-04-19
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

Не могу найти. Старый Фибоначчи устал вращаться

в общем обучаюсь. Искал всюду взглянуть (сам я уже за 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 утра вожусь и пока на исходной можно сказать и остался.

Помогайте пацаны) благодарю заранее)

Офлайн

#2 Апрель 19, 2014 11:28:02

Jabutyf
Зарегистрирован: 2014-04-19
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

Не могу найти. Старый Фибоначчи устал вращаться

вопрос стоит так, что мне нужно вращать фибоначчи до определенного момента) а он у меня застревает)

Офлайн

#3 Апрель 19, 2014 13:41:52

ajib6ept
От: От: От: От: От: От: От: От:
Зарегистрирован: 2013-08-04
Сообщения: 297
Репутация: +  26  -
Профиль   Отправить e-mail  

Не могу найти. Старый Фибоначчи устал вращаться

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 откуда и взято решение



_________________________
Python golden rule: Do not PEP 8 unto others; only PEP 8 thy self.
Don't let PEP 8 make you insanely intolerant of other people's code.

Офлайн

#4 Апрель 19, 2014 21:01:34

Jabutyf
Зарегистрирован: 2014-04-19
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

Не могу найти. Старый Фибоначчи устал вращаться

спасибо))

Офлайн

#5 Апрель 19, 2014 21:03:33

Jabutyf
Зарегистрирован: 2014-04-19
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

Не могу найти. Старый Фибоначчи устал вращаться

единственное, я не понял эту манеру синтаксиса. a, b = 0, 1, a, b = b, a + b

Офлайн

#6 Апрель 20, 2014 05:46:04

ajib6ept
От: От: От: От: От: От: От: От:
Зарегистрирован: 2013-08-04
Сообщения: 297
Репутация: +  26  -
Профиль   Отправить e-mail  

Не могу найти. Старый Фибоначчи устал вращаться

Запись в сокращенном виде

 a, b = 0, 1
#т.е.
a = 0
b = 1
a, b = b, a + b
#т.е.
a = b
b = a+b



_________________________
Python golden rule: Do not PEP 8 unto others; only PEP 8 thy self.
Don't let PEP 8 make you insanely intolerant of other people's code.

Офлайн

#7 Апрель 20, 2014 22:44:36

Jabutyf
Зарегистрирован: 2014-04-19
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

Не могу найти. Старый Фибоначчи устал вращаться

я так изначально и понял, но почему-то когда я выполнял схожую функцию и расписал ее именно в такой последовательности, она почему-то не работала. А в a,b=b,a+b работала… видимо шведскую стенку пора покупать с молотком

Офлайн

#8 Апрель 21, 2014 01:40:59

Jabutyf
Зарегистрирован: 2014-04-19
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

Не могу найти. Старый Фибоначчи устал вращаться

ееее
сам написал в итоге так

def fibn(n):
  a,b=0,1
  while a<n:
    print a,
    a,b=b,a+b

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version