Добавить в корзинуПозвонить
Найти в Дзене
Информатика

🚀 Подпрограммы в Python: как писать код, который не превратится в лапшу

Представь: ты делаешь крутого бота для Discord или пишешь игру. Код растёт, строк становится всё больше, и в какой-то момент ты понимаешь — это хаос. Найти ошибку? Невозможно. Добавить новую фишку? Кошмар наяву. Знакомо? Тогда тебе нужны подпрограммы — штука, которая спасает код от превращения в свалку. Подпрограммы — это как LEGO для кода. Вместо того чтобы писать одно и то же по 10 раз, ты создаёшь готовый блок и используешь его где угодно. В Python два вида подпрограмм: Звучит сложно? Сейчас разберём на примерах! Процедура — это кнопка на геймпаде. Нажал X — персонаж прыгнул. Тебе не важно, как это работает внутри, важен результат. print(1111111)
print(1111111)
print(1111111)
print(1111111) def digit():
print(1111111)
digit()
digit()
digit()
digit() Профит? Если нужно изменить на 8 единиц — меняешь в ОДНОМ месте, а не в четырёх. Это и есть магия подпрограмм. А что если нужно выводить не 7 единиц, а разное количество? Добавляем параметр: def digit(n):
print('1' * n)
digit(7
Оглавление
Как писать код
Как писать код

Представь: ты делаешь крутого бота для Discord или пишешь игру. Код растёт, строк становится всё больше, и в какой-то момент ты понимаешь — это хаос. Найти ошибку? Невозможно. Добавить новую фишку? Кошмар наяву.

Знакомо? Тогда тебе нужны подпрограммы — штука, которая спасает код от превращения в свалку.

🤔 В чём фишка?

Подпрограммы — это как LEGO для кода. Вместо того чтобы писать одно и то же по 10 раз, ты создаёшь готовый блок и используешь его где угодно.

В Python два вида подпрограмм:

  • Процедуры — делают что-то (например, выводят текст на экран)
  • Функции — делают что-то И возвращают результат (например, вычисляют сумму)

Звучит сложно? Сейчас разберём на примерах!

🎮 Процедуры: нажал кнопку — получил действие

Процедура как кнопка геймпада
Процедура как кнопка геймпада

Процедура — это кнопка на геймпаде. Нажал X — персонаж прыгнул. Тебе не важно, как это работает внутри, важен результат.

Плохой код (копипаста):

print(1111111)
print(1111111)
print(1111111)
print(1111111)

Крутой код (с процедурой):

def digit():
print(1111111)

digit()
digit()
digit()
digit()

Профит? Если нужно изменить на 8 единиц — меняешь в ОДНОМ месте, а не в четырёх. Это и есть магия подпрограмм.

🎯 Процедуры с параметрами: регулируй как хочешь

А что если нужно выводить не 7 единиц, а разное количество? Добавляем параметр:

def digit(n):
print('1' * n)

digit(7) # 1111111
digit(10) # 1111111111
digit(3) # 111

Параметр — это как громкость на колонке. Крутишь вправо — громче, влево — тише. Здесь меняешь число — меняется длина строки.

🧮 Алгоритм Евклида: старая магия для НОД

 Алгоритм Евклида
Алгоритм Евклида

Нужно найти НОД (наибольший общий делитель) двух чисел? Используй алгоритм, которому больше 2000 лет:

def nod(a, b):
while a != b:
if a > b:
a = a - b
else:
b = b - a
return a

Как работает? Вычитаем меньшее из большего, пока числа не станут равными. Просто, как в Древней Греции!

⚡ Функции: не просто делай, а ещё и возвращай!

Функция как машина
Функция как машина

Функция — это калькулятор. Ты вводишь 5 + 3, жмёшь «=» — получаешь 8. Функция не просто что-то делает, она отдаёт результат.

def max(a, b):
if a > b:
return a
else:
return b

print(max(6, 8)) # 8
x = max(6, 8) # x = 8

В чём сила? Результат можно сразу вывести, сохранить в переменную или передать в другую функцию!

Хочешь круче? Найди максимум из ЧЕТЫРЁХ чисел:

f = max(max(a, b), max(c, d))

Это как турнир: сначала полуфиналы (находим два максимума), потом финал (максимум из максимумов). Вот так функции работают в связке!

🐰 Рекурсия: функция вызывает САМА СЕБЯ

Рекурсия и дерево Фибоначчи
Рекурсия и дерево Фибоначчи

Самая мозговыносящая штука в программировании — рекурсия. Это когда функция вызывает саму себя. Как зеркала, отражающие друг друга до бесконечности.

Задача про кроликов (последовательность Фибоначчи)

Тебе подарили пару кроликов. Через 2 месяца они дали приплод. Потом каждый месяц — по паре. Сколько пар будет через 12 месяцев?

Ответ: 1, 1, 2, 3, 5, 8, 13, 21...

Это последовательность Фибоначчи! Каждое число — сумма двух предыдущих.

def f(n):
if n == 1 or n == 2:
return 1
else:
return f(n - 1) + f(n - 2)

Функция вызывает саму себя, пока не дойдёт до базового случая (1 или 2). Это как дерево, которое растёт вверх, ветвясь на каждом уровне.

Вау-момент: этой задаче больше 800 лет! Её решил итальянский математик Фибоначчи в XIII веке.

🌍 Глобальные vs локальные переменные

Локальная переменная — живёт только внутри функции. Как персонаж в игре, который исчезает, когда уровень закончился.

Глобальная переменная (с ключевым словом global) — живёт во всей программе. Как твой профиль в соцсети, доступный отовсюду.

def nod(a, b):
global x # теперь x — глобальная
# код функции
x = a

💡 Золотое правило программиста

Золотое правило программиста
Золотое правило программиста

Когда пишешь код, спроси себя: "Не буду ли я это повторять?"

Если ответ "Да" — создавай подпрограмму! Это сэкономит тебе часы отладки и сделает код понятным даже через год.

✨ Почему подпрограммы — это круто:

  • Код легче читать (как оглавление в книге)
  • Проще искать ошибки (не во всей программе, а в одной функции)
  • Можно использовать один код 100 раз
  • Легко добавлять новые фишки

🎯 Попробуй сам!

Задача для тебя: напиши функцию star(n), которая выводит строку из n звёздочек. Вызови её несколько раз с разными числами.

Челлендж: напиши функцию, которая считает количество цифр в числе. Например, для 12345 результат — 5.

🚀 Итог

Подпрограммы — это суперсила в программировании. С ними твой код:

  • 🧹 Чище (не лапша из 1000 строк)
  • 🔧 Удобнее (можно переиспользовать)
  • 🐛 Легче отлаживать (ошибка в одном месте)
  • 💪 Мощнее (одна функция может вызывать другую)

Каждый крутой проект на GitHub, каждое приложение на твоём телефоне, каждая игра — всё это построено на подпрограммах.

Практикуйся, экспериментируй, ломай и чини — так учатся все программисты!

💡 Полный учебный материал с примерами, иллюстрациями и практическими заданиями — на нашем сайте.