✅ Решения

⚡ Кратко: решения

Функция - именованный блок кода, который можно вызывать много раз.

def создаёт функцию, pass временно оставляет обязательный блок пустым.

При вызове функции позиционные аргументы сопоставляются по порядку, именованные - по названию параметра.

Аргументы по умолчанию пишутся после обязательных параметров.

*args собирает лишние позиционные аргументы в tuple, **kwargs - именованные аргументы в dict.

return завершает функцию и возвращает значение; без return результатом будет None.

LEGB описывает поиск имён: Local, Enclosing, Global, Built-in.

global нужен только для изменения глобальной переменной, но чаще лучше передавать данные параметрами.

Топ-3 ошибки: передавать не то количество аргументов; ожидать значение от функции, где нет return; менять global там, где достаточно параметров и return.

Решение 1. Конвертер температуры

def convert_temperature(temp, scale):
    scale = scale.upper()
    if scale == "C":
        return f"{temp}C = {temp * 9 / 5 + 32}F"
    if scale == "F":
        return f"{temp}F = {(temp - 32) * 5 / 9}C"
    return "Некорректная шкала"

print(convert_temperature(100, "C"))

Ранний return убирает лишнюю вложенность и явно обрабатывает некорректную шкалу.

Решение 2. Фильтрация строк

def filter_strings(min_len, *words):
    return [word for word in words if len(word) > min_len]

strings = ["apple", "banana", "cherry", "date", "fig"]
print(filter_strings(5, *strings))

*words принимает отдельные строки, а распаковка *strings превращает список в набор позиционных аргументов.

Решение 3. Проверка знака

def check_number(num):
    if num > 0:
        return "Число положительное"
    if num < 0:
        return "Число отрицательное"
    return "Число равно нулю"

print(check_number(-3))

После return функция завершается, поэтому else не обязателен.