Python

Сборник задач по Python: от условий до словарей

Этот сборник идет от простых условий к структурам данных. Он подходит, если вы уже знаете синтаксис, но хотите связать темы в одну практику

Задачи показывают, как условие, цикл, список и словарь постепенно складываются в маленькие рабочие решения

Как работать с подборкой

Материал закрывает путь от if и for до словарей, группировки и обработки списков словарей

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

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

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

Задача 1. Четное или нечетное

Условие: Определите, является ли число четным

Подсказка: Остаток от деления на 2 показывает четность

Решение:

number = int(input("Число: "))

if number % 2 == 0:
    print("Четное")
else:
    print("Нечетное")

Проверка: Проверьте 0, 7 и 10

Задача 2. Большее из двух чисел

Условие: Прочитайте два числа и выведите большее

Подсказка: Отдельно решите, что делать при равенстве

Решение:

a = int(input("Первое число: "))
b = int(input("Второе число: "))

if a > b:
    print(a)
elif b > a:
    print(b)
else:
    print("Числа равны")

Проверка: Проверьте пары 5/3, 2/9 и 4/4

Задача 3. Счетчик от 1 до N

Условие: Пользователь вводит N, программа печатает числа от 1 до N

Подсказка: range в правой границе не включает последнее число

Решение:

n = int(input("N: "))

for number in range(1, n + 1):
    print(number)

Проверка: Проверьте N = 1 и N = 5

Задача 4. Сумма чисел от 1 до N

Условие: Посчитайте сумму всех чисел от 1 до введенного N

Подсказка: Создайте переменную total и увеличивайте ее в цикле

Решение:

n = int(input("N: "))
total = 0

for number in range(1, n + 1):
    total += number

print(total)

Проверка: Для N = 5 результат должен быть 15

Задача 5. Только положительные числа

Условие: Из списка чисел соберите новый список только с положительными значениями

Подсказка: Не удаляйте элементы из исходного списка во время обхода

Решение:

numbers = [-3, 0, 5, 8, -1]
positive = []

for number in numbers:
    if number > 0:
        positive.append(number)

print(positive)

Проверка: Результат должен быть [5, 8]

Задача 6. Частота слов

Условие: Для списка слов посчитайте, сколько раз встречается каждое слово

Подсказка: Словарь удобен, потому что слово становится ключом

Решение:

words = ["cat", "dog", "cat", "bird", "dog", "cat"]
counts = {}

for word in words:
    counts[word] = counts.get(word, 0) + 1

print(counts)

Проверка: Для cat должно получиться 3

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

Условие: Сгруппируйте слова в словарь по первой букве

Подсказка: Ключом будет первая буква, значением список слов

Решение:

words = ["cat", "car", "dog", "door"]
groups = {}

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

print(groups)

Проверка: Для c должно быть два слова

Задача 8. Сумма заказов по клиентам

Условие: Дан список заказов, посчитайте сумму по каждому клиенту

Подсказка: Имя клиента удобно сделать ключом словаря

Решение:

orders = [
    {"client": "Анна", "total": 1000},
    {"client": "Иван", "total": 500},
    {"client": "Анна", "total": 700},
]
totals = {}

for order in orders:
    client = order["client"]
    totals[client] = totals.get(client, 0) + order["total"]

print(totals)

Проверка: У Анны должно получиться 1700

Задача 9. Фильтр пользователей

Условие: Оставьте активных пользователей старше 18 лет

Подсказка: Условие может проверять сразу два поля

Решение:

users = [
    {"name": "Анна", "age": 20, "active": True},
    {"name": "Иван", "age": 17, "active": True},
    {"name": "Оля", "age": 25, "active": False},
]
result = []

for user in users:
    if user["age"] >= 18 and user["active"]:
        result.append(user)

print(result)

Проверка: В результате должна остаться Анна

Задача 10. Сортировка товаров

Условие: Отсортируйте товары по цене

Подсказка: key указывает, по какому полю сортировать словари

Решение:

products = [
    {"title": "Книга", "price": 700},
    {"title": "Курс", "price": 3000},
    {"title": "Блокнот", "price": 200},
]

products.sort(key=lambda product: product["price"])
print(products)

Проверка: Первым должен быть блокнот

Задача 11. Подсчет статусов задач

Условие: Дан список задач со статусами, посчитайте количество задач в каждом статусе

Подсказка: Статус удобно использовать как ключ словаря

Решение:

tasks = [
    {"title": "A", "status": "new"},
    {"title": "B", "status": "done"},
    {"title": "C", "status": "new"},
]
counts = {}

for task in tasks:
    status = task["status"]
    counts[status] = counts.get(status, 0) + 1

print(counts)

Проверка: Для status new должно получиться 2

Задача 12. Проходной балл

Условие: Разделите студентов на прошедших и не прошедших по баллу 60

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

Решение:

students = [
    {"name": "Анна", "score": 75},
    {"name": "Иван", "score": 50},
    {"name": "Оля", "score": 90},
]
result = {"passed": [], "failed": []}

for student in students:
    if student["score"] >= 60:
        result["passed"].append(student["name"])
    else:
        result["failed"].append(student["name"])

print(result)

Проверка: Анна и Оля должны попасть в passed

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

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

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

Для каждой задачи сделайте минимум три запуска: обычный пример, крайний пример и пример с неожиданными данными. Для чисел это может быть ноль или отрицательное значение, для строк — пустая строка, для списков — пустой список или повторяющиеся элементы

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

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

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

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

Задача 13. Частотный словарь букв

Условие: Посчитайте, сколько раз встречается каждая буква в слове

word = "banana"
counts = {}

for char in word:
    counts[char] = counts.get(char, 0) + 1

print(counts)

Проверка: Попробуйте слово с пробелами и приведите его к нижнему регистру

Задача 14. Словарь оценок

Условие: Дан словарь учеников и оценок, выведите имена тех, у кого оценка 5

grades = {"Анна": 5, "Илья": 4, "Олег": 5}

for name, grade in grades.items():
    if grade == 5:
        print(name)

Проверка: Добавьте оценку 3 и отдельный подсчет среднего балла

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

Настройки cookie

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