Python · Синтаксис · Начальный уровень

Функции

10 задач

Базовые упражнения по функциям в Python: создание функций, параметры, return, проверки чисел и строк, работа со списками, кортежами и простыми вычислениями.

Что такое функции и зачем они нужны

#
Функция — это именованный блок кода, который можно вызвать по имени откуда угодно и сколько угодно раз. Суть не в том, чтобы меньше печатать, — а в том, чтобы дать поведению имя и сделать код тестируемым и пригодным для повторного использования. Без функций, если нужно проверить, является ли число чётным, в трёх разных местах, придётся трижды копировать одну и ту же проверку if n % 2 == 0. Когда логика меняется — исправляете в трёх местах и надеетесь, что не пропустили ни одного. С функцией исправляете один раз. Функция также создаёт чёткий контракт: вот что входит (параметры), вот что выходит (возвращаемое значение). Этот контракт можно проверить отдельно, не запуская всю программу. В этих задачах каждая задача имеет одинаковый формат: напишите функцию, которая делает одну конкретную вещь. Это заставляет думать о вводе и выводе отдельно от остального кода — что и является ключевым навыком.

def, параметры и return

#
Объявление функции в Python: ```python def square(n): return n * n result = square(5) print(result) # 25 ``` def объявляет определение функции. square — имя. n в скобках — параметр, локальная переменная, которая получает значение, переданное при вызове. return возвращает значение вызывающему коду и завершает функцию. Функция без оператора return (или с голым return) возвращает None. Обычно это не то, чего ждёшь в задачах — всегда проверяйте, что вы действительно возвращаете значение. pass — это заглушка, которая позволяет написать сигнатуру функции до реализации тела. Вы увидите её в начальном коде каждой задачи: ```python def square(n): pass # удалите это и напишите реальную логику ``` Параметры являются локальными: они существуют только внутри функции. Изменение параметра не влияет на переменные снаружи. Если нужно передать результат обратно — возвращайте его через return, а не выводите print внутри функции (разве что задача функции и есть вывод, что бывает редко). Несколько параметров работают так же: ```python def max_of_two(a, b): if a >= b: return a return b ``` Как только достигается return, функция останавливается. else после return не нужен.

Три паттерна функций

#
Большинство задач в этой теме соответствуют одному из трёх паттернов. Вычислить и вернуть — применяем операцию и возвращаем результат: ```python def power(base, exp): return base ** exp print(power(2, 10)) # 1024 ``` Проверить и вернуть булево значение — проверяем условие, возвращаем True или False: ```python def is_even(n): return n % 2 == 0 print(is_even(8)) # True print(is_even(7)) # False ``` Обратите внимание: return n % 2 == 0 — это одно выражение. n % 2 == 0 уже вычисляется в True или False, поэтому возвращаем это напрямую — без if. Итерировать и собрать — проходим по последовательности внутри функции, накапливаем результат, возвращаем его: ```python def multiply(sequence): result = 1 for n in sequence: result *= n return result print(multiply((3, 4, 100, 15))) # 18000 ``` Строковые операции часто комбинируют встроенный метод с return: ```python def to_upper(text): return text.upper() ``` Коротко, но полезно — функции не должны быть длинными, чтобы иметь смысл.

Быстрый справочник: функции

#
**Синтаксис функции** ```python def имя_функции(параметр1, параметр2): # тело return значение # вызов: результат = имя_функции(аргумент1, аргумент2) ``` **Ключевые правила** | Правило | Деталь | |---|---| | `return` возвращает значение | без него функция возвращает `None` | | `return` завершает функцию | код после него в той же ветке не выполняется | | Параметры локальны | их изменение не влияет на переменные снаружи | | `pass` — это заглушка | удалите её перед написанием реальной логики | **Три основных паттерна** ```python # 1. Вычислить и вернуть def power(base, exp): return base ** exp # 2. Проверить и вернуть булево значение def is_even(n): return n % 2 == 0 # выражение уже даёт True/False # 3. Перебрать и построить def multiply_all(nums): result = 1 for n in nums: result *= n return result ``` **Типичные ошибки** ```python # Забыть return — функция молча вернёт None: def square(n): n * n # вычислено но не возвращено! # Печатать вместо возврата: def square(n): print(n * n) # вызывающий получит None, а не значение # Лишний if/else для булевых: def is_even(n): # плохо if n % 2 == 0: return True else: return False def is_even(n): # хорошо return n % 2 == 0 ```
01

Квадрат числа функцией.

#

Напишите функцию, которая принимает одно число и возвращает его квадрат.

def square(n):
    pass


result = square(5)
print(result)
result = square(2)
print(result)
result = square(25)
print(result)
Решение
def square(n):
    return n * n


result = square(5)
print(result)
result = square(2)
print(result)
result = square(25)
print(result)


# или
def square(n):
    result = n * n
    return result

# или
def square(n):
    result = n ** 2
    return result

# или
def square(n):
    return n ** 2
02

Большее число функцией.

#

Напишите функцию, которая принимает два числа и возвращает большее из них. Если они равны, то возвращает второе.

def max_of_two(a, b):
    pass


print(max_of_two(10, 7))
Решение
def max_of_two(a, b):
    if a > b:
        return a
    else:
        return b


print(max_of_two(10, 7))


# ИЛИ внимательно можно и так, else не нужен фактически,
# так как return завершает работу функции если он сработал в условии или вообще:
def max_of_two(a, b):
    if a > b:
        return a
    return b


print(max_of_two(10, 7))

# или так можно: сначала проверить равенство
def bigger(a, b):
    if a == b:
        return a
    if a > b:
        return a
    return b
03

Длина строки без len.

#

Напишите функцию, которая принимает строку и возвращает её длину (якобы нет функции len).

def string_length(text):
    pass


print(string_length("python"))
Решение
def string_length(text):
    count = 0
    for _ in text:
        count += 1
    return count


print(string_length("python"))

# или можно назвать счётчик более явно
def get_length(text):
    count = 0
    for char in text:
        count += 1
    return count
04

Чётность через функцию.

#

Напишите функцию, которая принимает число и возвращает True , если число чётное, иначе False .

def is_even(n):
    pass


print(is_even(8))
Решение
def is_even(n):
    if n % 2 == 0:
        return True
    else:
        return False

print(is_even(8))


# ИЛИ
def is_even(n):
    if n % 2 == 0:
        return True
    return False


# ИЛИ
def is_even(n):
    return n % 2 == 0  # сразу вернем результат от сравнения.

# или так можно через переменную
def is_even(n):
    result = n % 2 == 0
    return result
05

Сумма двух чисел функцией.

#

Напишите функцию, которая принимает два числа и возвращает их сумму.

def add(a, b):
    pass


print(add(3, 4))
Решение
def add(a, b):
    return a + b


print(add(3, 4))
06

Строка в верхнем регистре.

#

Напишите функцию, которая принимает строку и возвращает новую строку, символы в верхнем регистре.

def to_upper(text):
    pass


print(to_upper("hello"))
Решение
def to_upper(text):
    return text.upper()


print(to_upper("hello"))

# или так можно: результат сначала сохранить
def to_upper(text):
    result = text.upper()
    return result
07

Положительное число функцией.

#

Напишите функцию, которая принимает число и возвращает True , если оно положительное, иначе False .

def is_positive(n):
    pass


print(is_positive(-3))
Решение
def is_positive(n):
    if n > 0:
        return True
    else:
        return False

print(is_positive(-3))


# ИЛИ
def is_positive(n):
    if n > 0:
        return True
    return False


# ИЛИ
def is_positive(n):
    return n > 0
08

Возведение в степень.

#

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

def power(base, exp):
    pass


print(power(2, 3))
Решение
def power(base, exp):
    result = 1
    for _ in range(exp):
        result *= base
    return result

print(power(2, 3))


# ИЛИ
def power(base, exp):
    return base ** exp
09

Произведение чисел кортежа.

#

Напишите функцию, которая принимает кортеж из чисел и возвращает их произведение.

def multiply(sequence):
    pass


print(multiply((3, 4, 100, 15)))
Решение
def multiply(sequence):
    result = 1
    for n in sequence:
        result *= n
    return result


print(multiply((3, 4, 100, 15)))


# ИЛИ лучше
def multiply(sequence):
    if len(sequence) == 0:  # <--- прям хорошо
        return 0

    result = 1
    for n in sequence:
        result *= n
    return result
10

Повтор строки функцией.

#

Напишите функцию, которая принимает строку и число, и возвращает эту строку, повторённую указанное количество раз.

def repeat_text(text, count):
    pass


print(repeat_text(")", 3))
Решение
def repeat_text(text, count):  
    result = ""
    for _ in range(count):  # не круто, ниже есть круто.
        result += text
    return result


print(repeat_text(")", 3))


# ИЛИ
def repeat_text(text, count):
    return text * count