Решаем задачи с собесов на Джуниор разработчика. Подробно разбираем код. Числа Фибоначчи
Всем привет) сегодня напишем программу для нахождения первых n чисел Фибоначчи и увидим одну из примечательных особенностей специального символа end. Приступим)
Первоначально пройдемся по теории. Числа Фибоначчи — это последовательность чисел, которые задаются по определённому правилу. Оно звучит так: каждое следующее число равно сумме двух предыдущих. Первые два числа заданы сразу и равны 0 и 1.
Вот как выглядит последовательность Фибоначчи:
0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, … , ∞
Более подробно можно почитать тут
Формула для нахождения
На Python существует несколько разновидностей реализации алгоритма нахождения, но мы рассмотрим в рамках этой статьи самый простой. Начнем наш ряд с единицы. Если вы захотите поделиться своей версией алгоритма то можете опубликовать в комментариях)
Приступим к реализации, для начала создадим 2 переменные fib1, fib2 и присвоим им первоначальные значения, обе будут равны единице:
fib1 = fib2 = 1 # первоначальные значения fib1 и fib2
Далее спрашиваем у пользователя сколько чисел необходимо вывести, записываем в переменную n как тип данных int.
fib1 = fib2 = 1 # первоначальные значения fib1 и fib2
n = int(input("Введите количество выводимых чисел: ")) # присваиваем пременной n значение количества выводимых цифр
Выводим первоначальные числа которые записаны в переменные fib1 и fib2, заметим что в конце используем символ end, в данном случае он вставляет пробел между строками и предоставляет нам возможность продолжить дополнять текст в одну строку.
fib1 = fib2 = 1 # первоначальные значения fib1 и fib2
n = int(input("Введите количество выводимых чисел: ")) # присваиваем пременной n значение количества выводимых цифр
print(fib1, fib2, end = " ") # выводим первые 2 числа
Создаем цикл для поиска остальных чисел от 2 (так как 2 первых значения уже есть) до n (количество выводимых чисел, не забываем про ошибку на еденицу)
fib1 = fib2 = 1 # первоначальные значения fib1 и fib2
n = int(input("Введите количество выводимых чисел: ")) # присваиваем пременной n значение количества выводимых цифр
print(fib1, fib2, end = " ") # выводим первые 2 числа
for i in range (2, n): # и так как первоначальные значения уже вывели продолжим с двух
Теперь подходим к самому главному выражению в цикле, присваиваем fib1 будет равно fib2 а fib2 = fib1 + fib2 таким образом при каждой итерации цикла fib2 будет равняться предыдущее число + текущее. Отступы в цикле обозначил как " > > "
fib1 = fib2 = 1 # первоначальные значения fib1 и fib2
n = int(input("Введите количество выводимых чисел: ")) # присваиваем пременной n значение количества выводимых цифр
print(fib1, fib2, end = " ") # выводим первые 2 числа
for i in range (2, n): # и так как первоначальные значения уже вывели продолжим с двух
> > fib1, fib2 = fib2, fib1 + fib2 # выполняется в цикле
Теперь включаем полученное значение fib2 в наш список, благодаря end мы склеиваем строки в одну строку.
fib1 = fib2 = 1 # первоначальные значения fib1 и fib2
n = int(input("Введите количество выводимых чисел: ")) # присваиваем пременной n значение количества выводимых цифр
print(fib1, fib2, end = " ") # выводим первые 2 числа
for i in range (2, n): # и так как первоначальные значения уже вывели продолжим с двух
> > fib1, fib2 = fib2, fib1 + fib2 # fib1 = fib2 а fib2 = fib1 +fib2
> > print(fib2, end = " ") # вывод полученного значения
Запускаем код и любуемся результатом:
Все наша программа готова! Знаю что можно написать ее другими способами (рекурсией) но решил объяснить через циклы так как для новичков это проще. Ниже опубликовал картинку с кодом.
Картинка с кодом
Также можно поиграться с кодом в онлайн интерпретаторе - тык
Мой канал по python: https://t.me/python_scrypt (полезная инфа, обзор библиотек)
Если статья информативная то прошу поддержать плюсом) всем спасибо за просмотр!)