Начну данный пост с практического примера, на котором будет проще объяснить основную мысль данного материала.
Давайте попробуем решить такую задачу:
Человек пошел за грибами.
Программа запрашивает у пользователя количество собранных грибов, и если грибы продолжают попадаться, то есть их количество не равно 0, то сбор грибов продолжается.
Если в какой-то момент пользователь закончил сбор дикоросов и вводит количество грибов равное 0, то программа выводит сообщение о завершении мероприятия и завершает свою работу.
Циклы в решении использовать нельзя.
Решение:
Изображение автора
Как можете видеть, в решении использовано две функции. В первой, mushroom_picking(), мы запрашиваем у пользователя количество собранных грибов.
Если количество не равно 0, то прямо из первой функции мы вызываем вторую, cont_func(), которая выводит сообщение о продолжении сбора урожая и снова вызывает функцию mushroom_picking().
Если же количество при очередном запросе становится равным нулю, то просто выводится сообщение о том, что сбор грибов завершен и программа завершает свою работу.
Изображение Gerd Altmann с сайта Pixabay
В этом примере продемонстрирован крайне важный в разработке момент: функции могут вызываться не только из основного кода, но так же из тела функции.
Более того, это не обязательно должна быть другая функция. Одна и та же функция может вызывать саму себя.
Этот прием называют рекурсивным вызоаом и мы еще не раз будем возвращаться к нему в нашем блоге.
Пока идея состояла в том, чтобы познакомиться с возможностью обходится в подобных задачах без цикла и расширить знания о применении функций в языке программирования Python.
(Изображение для мобильной версии Marc Pascual с сайта Pixabay)
Мы используем cookie-файлы, чтобы улучшить сервисы для вас. Если ваш возраст менее 13 лет, настроить cookie-файлы должен ваш законный представитель. Больше информации
Нет комментариев