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 и отдельный подсчет среднего балла