Чем больше программа, тем чаще один и тот же код повторяется. Копировать его — путь к беспорядку. Лучше завернуть кусок кода в свою функцию: описал один раз, а вызываешь когда нужно одной строкой. Сегодня научимся делать функции и соберём мини-РПГ, где удар героя — это функция.

def — своя команда
Функцию создают словом def (от англ. define — «определить»): пишут имя, скобки и двоеточие, а тело — с отступом. Это только ОПИСАНИЕ. Чтобы функция сработала, её нужно ВЫЗВАТЬ — написать её имя со скобками.
def privet():
print("Привет!")
privet()
privet()
Привет!
Привет!
def — ОПИСАТЬ функцию (один раз):
def privet():
print("Привет!")
ВЫЗВАТЬ — сколько угодно раз:
privet() --> Привет!
privet() --> Привет!
def — функция описана, но молчит. Сработает она лишь когда её вызовут: privet(). Описал один раз — вызывай сколько угодно.Параметры и return: вход и выход
Функции можно передавать данные — через параметры в скобках. А чтобы функция вернула результат (а не просто напечатала), используют return: он отдаёт значение обратно, и его можно сохранить в переменную или использовать дальше.
def kvadrat(x):
return x * x
rezultat = kvadrat(3)
print(rezultat)
print(kvadrat(5))
9
25
Функция — это «машинка»: вход -> обработка -> выход
параметр (вход)
|
v
┌──────────────────────────┐
│ def kvadrat(x): │
│ return x * x │
└──────────────────────────┘
|
v
return (выход)
kvadrat(3) --> 9
print просто показывает текст на экране, а return ОТДАЁТ значение обратно в программу — его можно положить в переменную и считать дальше. В расчётах нужен именно return.Упражнение: мини-РПГ «сражение»
Скопируй и запусти. Удар — это функция udar: она бросает случайный урон и возвращает его. Герой и монстр бьют по очереди в цикле, пока у кого-то не кончится здоровье.
import random
def udar(imya):
uron = random.randint(5, 15)
print(imya, "наносит удар на", uron)
return uron
geroy_hp = 50
monstr_hp = 50
while geroy_hp > 0 and monstr_hp > 0:
monstr_hp = monstr_hp - udar("Герой")
geroy_hp = geroy_hp - udar("Монстр")
print("HP — Герой:", geroy_hp, "| Монстр:", monstr_hp)
if geroy_hp > 0:
print("Победа!")
else:
print("Увы, поражение.")
Герой наносит удар на 12
Монстр наносит удар на 7
HP — Герой: 43 | Монстр: 38
...
Победа!
- Сделай героя сильнее: поменяй диапазон урона в функции udar.
- Добавь функцию
lechenie(), которая возвращает + немного HP, и вызывай её иногда. - Заведи стартовое HP через input — пусть игрок сам выбирает сложность.
Контрольный вопрос. Зачем нужны функции (def)?
Подсказка: Главная идея — не копировать один и тот же код, а завернуть его и переиспользовать.
Онлайн-проверка ответа появится позже
Контрольный вопрос. Что выведет программа из этого задания? Впиши число.
Исходный код для этого задания:
def kvadrat(x): return x * x print(kvadrat(3))Подсказка: kvadrat(3) подставит x = 3 и вернёт 3 * 3.
Онлайн-проверка ответа появится позже
Контрольный вопрос. Что выведет программа из этого задания? Впиши то, что появится (без кавычек).
Исходный код для этого задания:
def privet(imya): return "Привет, " + imya print(privet("Аня"))Подсказка: В функцию передаётся imya = «Аня». Она склеивает «Привет, » и имя.
Онлайн-проверка ответа появится позже
Контрольный вопрос. Что выведет программа из этого задания? Впиши число.
Исходный код для этого задания:
def summa(a, b): return a + b print(summa(2, 3))Подсказка: Функция получает a = 2 и b = 3 и возвращает их сумму.
Онлайн-проверка ответа появится позже
Контрольный вопрос. Чем return отличается от print внутри функции?
Подсказка: Подумай: можно ли результат print положить в переменную и посчитать с ним дальше?
Онлайн-проверка ответа появится позже
Задание. Напиши код сам. Напиши строку-заголовок функции с именем privet, без параметров. (Только строку с def и двоеточием.)
Исходный код для этого задания:
# напиши ниже строку-заголовок функции privet без параметров print("Привет!")Подсказка: Шаблон: def имя():. Скобки пустые, в конце двоеточие.
✅ Готово, если: ты ввёл(а) верный ответ, и онлайн-проверка его приняла.
Онлайн-проверка ответа появится позже
Задание. Напиши код сам. Напиши строку-заголовок функции с именем udar и одним параметром uron. (Только строку с def и двоеточием.)
Исходный код для этого задания:
# напиши ниже строку-заголовок функции udar с параметром uron print("Удар на", uron)Подсказка: Шаблон: def имя(параметр):. Параметр пишут в скобках.
✅ Готово, если: ты ввёл(а) верный ответ, и онлайн-проверка его приняла.
Онлайн-проверка ответа появится позже
Задание. Напиши код сам. Функция udar уже описана. Напиши строку, которая ВЫЗОВЕТ её с аргументом 10.
Исходный код для этого задания:
def udar(uron): print("Удар на", uron) # напиши ниже строку, которая вызовет udar с числом 10Подсказка: Вызов — это имя функции и аргумент в скобках. Шаблон: имя(значение).
✅ Готово, если: ты ввёл(а) верный ответ, и онлайн-проверка его приняла.
Онлайн-проверка ответа появится позже
Задание. Напиши код сам. Функция посчитала результат в переменную rezultat, но не возвращает его. Напиши недостающую строку, которая вернёт rezultat обратно.
Исходный код для этого задания:
def schitat(a, b): rezultat = a + b # напиши тут строку, которая вернёт rezultatПодсказка: return отдаёт значение обратно в программу. Шаблон: return имя_переменной.
✅ Готово, если: ты ввёл(а) верный ответ, и онлайн-проверка его приняла.
Онлайн-проверка ответа появится позже
Контрольный вопрос. Программа из этого задания ничего не выводит на экран. Почему?
Исходный код для этого задания:
def privet(): print("Привет!")Подсказка: def только описывает функцию. Что нужно сделать, чтобы она сработала?
Онлайн-проверка ответа появится позже
Что дальше
Теперь ты умеешь наводить порядок в коде своими функциями: описал раз — вызывай сколько нужно, передавай данные и получай результат. С этим арсеналом мы переходим к самому красивому — рисованию. В следующем разделе подключим черепашью графику и нарисуем первые картинки.
