Python

Задачи на функции Python

Функции нужны, чтобы отделить логику от ввода и вывода. В этой подборке каждая задача тренирует маленькую функцию, которую можно проверить на нескольких наборах данных

Работайте с подборкой руками: сначала попробуйте написать решение самостоятельно, затем сравните с примером и обязательно измените входные данные. Так задача превращается в навык, а не в просмотр готового ответа

Как заниматься

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

После решения проверьте обычный случай, пустой случай и один неудобный вариант: ноль, отрицательное число, повтор, пробелы в строке или список из одного элемента

Задачи с решениями

Задача 1. Сумма двух чисел

Функция принимает два числа и возвращает сумму

Решение:

def add(a, b):
    return a + b

print(add(2, 3))
print(add(-5, 10))

Проверка: функция должна возвращать значение, а не только печатать

Задача 2. Проверка четности

Функция возвращает True, если число четное

Решение:

def is_even(number):
    return number % 2 == 0

print(is_even(4))
print(is_even(7))

Проверка: проверьте 0 и отрицательное число

Задача 3. Максимум в списке

Функция возвращает максимальное число или None для пустого списка

Решение:

def find_max(numbers):
    if not numbers:
        return None
    return max(numbers)

print(find_max([3, 8, 2]))
print(find_max([]))

Проверка: проверьте список из одного элемента

Задача 4. Очистка имени

Функция убирает пробелы и приводит имя к нормальному виду

Решение:

def normalize_name(name):
    return name.strip().title()

print(normalize_name("  анна  "))

Проверка: проверьте пустую строку

Задача 5. Фильтр положительных

Функция возвращает новый список только с положительными числами

Решение:

def only_positive(numbers):
    result = []
    for number in numbers:
        if number > 0:
            result.append(number)
    return result

print(only_positive([-2, 0, 5, 7]))

Проверка: исходный список не должен меняться

Задача 6. Подсчет слов

Функция возвращает количество слов в строке

Решение:

def count_words(text):
    return len(text.split())

print(count_words("python  is useful"))

Проверка: проверьте строку из пробелов

По этой теме полезно отдельно посмотреть Составьте еженедельное расписание занятий, чтобы расширить контекст и сравнить подходы

По этой теме полезно отдельно посмотреть Аннотации типов для декораторов в Python, чтобы расширить контекст и сравнить подходы

Как проверять свои решения

Закройте готовый ответ и перепишите решение по памяти. Если приходится постоянно подглядывать, уменьшите задачу: оставьте два элемента, одно условие и один вывод

Хороший признак — вы можете объяснить, какие данные входят в программу, где они меняются и почему результат именно такой

Частые ошибки новичков

  • читать решение, но не запускать его
  • проверять только один красивый пример
  • забывать преобразовать input в число
  • менять список во время перебора без необходимости
  • писать слишком общие имена переменных
  • путать вывод через print и возврат через return

Дополнительные задачи

Задача 9. Второй максимум

Найдите второе по величине число в списке

numbers = [5, 1, 9, 9, 3]
unique_numbers = sorted(set(numbers), reverse=True)

if len(unique_numbers) >= 2:
    print(unique_numbers[1])
else:
    print("Недостаточно разных чисел")

Проверка: проверьте список, где все числа одинаковые

Задача 10. Группировка слов по первой букве

words = ["python", "php", "sql", "swift"]
groups = {}

for word in words:
    first_letter = word[0]
    groups.setdefault(first_letter, []).append(word)

print(groups)

Проверка: добавьте слово на уже существующую букву

Задача 11. Удаление дублей с сохранением порядка

items = ["a", "b", "a", "c", "b"]
result = []

for item in items:
    if item not in result:
        result.append(item)

print(result)

Проверка: проверьте пустой список и список без дублей

Задача 12. Простая функция проверки логина

def is_valid_login(login):
    login = login.strip()
    return len(login) >= 3 and login.isalnum()

print(is_valid_login("user1"))
print(is_valid_login(" a "))

Проверка: проверьте пробелы, короткий логин и символ !

Как усложнять после решения

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

Еще задачи для закрепления

Задача 13. Индексы четных чисел

Найдите индексы всех четных чисел в списке

Решение:

numbers = [3, 4, 8, 9, 10]
indexes = []

for index, number in enumerate(numbers):
    if number % 2 == 0:
        indexes.append(index)

print(indexes)

Проверка: проверьте список без четных чисел

Задача 14. Самое длинное слово

Решение:

words = ["python", "sql", "javascript"]
longest = ""

for word in words:
    if len(word) > len(longest):
        longest = word

print(longest)

Проверка: проверьте два слова одинаковой длины и пустой список

Задача 15. Сумма по категориям

Решение:

items = [
    {"category": "food", "amount": 300},
    {"category": "books", "amount": 900},
    {"category": "food", "amount": 250},
]

totals = {}

for item in items:
    category = item["category"]
    totals[category] = totals.get(category, 0) + item["amount"]

print(totals)

Проверка: добавьте новую категорию и пустой список

Задача 16. Меню команд

Решение:

commands = ["add", "list", "exit"]
command = "help"

if command in commands:
    print("Команда поддерживается")
else:
    print("Неизвестная команда")

Проверка: проверьте регистр букв и пробелы по краям

Как повторять задачи

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

Хорошая самостоятельная проверка выглядит так: вы можете объяснить условие, назвать нужные переменные, написать решение без копирования и добавить один неудобный тест. Если хотя бы один пункт не получается, вернитесь к самой маленькой версии задачи и соберите ее заново

Финальная проверка функций

После всех задач перепишите любые три решения так, чтобы функция ничего не печатала, а только возвращала результат. Это важная привычка: функцию, которая возвращает значение, можно использовать в другой программе и тестировать отдельно

Пример:

def get_average(numbers):
    if not numbers:
        return 0
    return sum(numbers) / len(numbers)

result = get_average([5, 4, 3])
print(result)

Проверьте пустой список, один элемент и несколько элементов. Если функция зависит от input внутри себя, попробуйте переписать ее так, чтобы данные приходили через параметр. Это делает код гибче и понятнее

Подписаться
Уведомить о
guest
0 комментариев
Старые
Новые Популярные

Настройки cookie

0
Оставьте комментарий! Напишите, что думаете по поводу статьи.x