Python
Задачи для практики на Python
Практика по Python полезна, когда задачи не сводятся к одному примеру из урока, а заставляют выбрать подходящий инструмент
В этой подборке есть условия, циклы, списки, строки, словари и функции. Задачи можно решать по порядку или брать те, где чувствуется пробел
Как работать с подборкой
Материал подходит для повторения базовых тем перед следующими уроками или первым мини-проектом
Перед просмотром решения попробуйте написать хотя бы черновик. Если задача не идет, выпишите входные данные, ожидаемый результат и одно действие, которое нужно сделать первым
После решения измените данные и запустите код снова. Так вы быстрее увидите, где программа привязана только к одному примеру
Задачи с решениями
Задача 1. Четное или нечетное
Условие: Определите, является ли число четным
Подсказка: Остаток от деления на 2 показывает четность
Решение:
number = int(input("Число: "))
if number % 2 == 0:
print("Четное")
else:
print("Нечетное")
Проверка: Проверьте 0, 7 и 10
Задача 2. Сумма чисел от 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
Задача 3. Разворот строки
Условие: Разверните введенную строку в обратном порядке
Подсказка: Срез [::-1] берет строку с конца к началу
Решение:
text = input("Текст: ")
reversed_text = text[::-1]
print(reversed_text)
Проверка: Для python результат должен быть nohtyp
Задача 4. Сумма элементов списка
Условие: Дан список чисел, выведите сумму без встроенной функции sum
Подсказка: Пройдите по списку циклом и накопите total
Решение:
numbers = [3, 5, 2, 10]
total = 0
for number in numbers:
total += number
print(total)
Проверка: Сравните результат с sum(numbers)
Задача 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. Функция скидки
Условие: Напишите функцию, которая принимает цену и процент скидки, возвращает новую цену
Подсказка: Функция должна возвращать результат через return, а не только печатать
Решение:
def apply_discount(price, percent):
discount = price * percent / 100
return price - discount
print(apply_discount(1000, 15))
Проверка: Для 1000 и 15 результат должен быть 850
Задача 8. Очистить имя
Условие: Напишите функцию, которая убирает пробелы по краям и делает первую букву заглавной
Подсказка: strip и capitalize можно соединить в одном выражении
Решение:
def clean_name(name):
return name.strip().capitalize()
print(clean_name(" anna "))
Проверка: Проверьте имя с пробелами и разным регистром
Задача 9. Подсчет частоты букв
Условие: Функция считает, сколько раз встречается каждая буква в слове
Подсказка: Словарь подходит для подсчета
Решение:
def count_letters(word):
counts = {}
for char in word:
counts[char] = counts.get(char, 0) + 1
return counts
print(count_letters("banana"))
Проверка: Для banana буква a должна встретиться 3 раза
Задача 10. Мини-отчет по числам
Условие: Функция возвращает словарь с количеством, суммой и средним
Подсказка: Если список пустой, среднее должно быть 0
Решение:
def numbers_report(numbers):
total = sum(numbers)
count = len(numbers)
average = total / count if count else 0
return {"count": count, "total": total, "average": average}
print(numbers_report([10, 20, 30]))
Проверка: Проверьте пустой список
Задача 11. Удалить дубликаты с сохранением порядка
Условие: Соберите список уникальных значений в исходном порядке
Подсказка: Для маленькой задачи можно проверять через in
Решение:
numbers = [1, 2, 1, 3, 2, 4]
unique = []
for number in numbers:
if number not in unique:
unique.append(number)
print(unique)
Проверка: Результат должен быть [1, 2, 3, 4]
Задача 12. Разделить числа на две группы
Условие: Разложите числа на четные и нечетные списки
Подсказка: Создайте два списка и добавляйте число в нужный
Решение:
numbers = [1, 2, 3, 4, 5, 6]
even = []
odd = []
for number in numbers:
if number % 2 == 0:
even.append(number)
else:
odd.append(number)
print(even)
print(odd)
Проверка: Проверьте, что каждое число попало ровно в один список
По этой теме полезно отдельно посмотреть Составьте еженедельное расписание занятий, чтобы расширить контекст и сравнить подходы
По этой теме полезно отдельно посмотреть Аннотации типов для декораторов в Python, чтобы расширить контекст и сравнить подходы
Как проверять свои решения
Для каждой задачи сделайте минимум три запуска: обычный пример, крайний пример и пример с неожиданными данными. Для чисел это может быть ноль или отрицательное значение, для строк — пустая строка, для списков — пустой список или повторяющиеся элементы
Если код работает, объясните его словами. Скажите, какие данные приходят на вход, что хранится в переменных, где меняется результат и почему программа останавливается
Частые ошибки новичков
- читать решение, но не запускать его руками
- менять сразу несколько строк и не понимать, какая из них сломала код
- называть переменные одной буквой там, где можно написать понятное имя
- забывать проверять пустые строки, пустые списки и ноль
- путать вывод через print и возврат результата через return
- оставлять код рабочим только для одного заранее выбранного примера
Дополнительные задачи
Задача 13. Группировка чисел по четности
Условие: Разложите числа на два списка: четные и нечетные
numbers = [1, 2, 3, 4, 5, 6]
even = []
odd = []
for number in numbers:
if number % 2 == 0:
even.append(number)
else:
odd.append(number)
print(even)
print(odd)
Проверка: Добавьте ноль и отрицательные числа
Задача 14. Подсчет расширений файлов
Условие: Посчитайте, сколько файлов каждого расширения есть в списке
files = ["index.html", "style.css", "app.js", "main.py", "test.py"]
extensions = {}
for filename in files:
ext = filename.split(".")[-1]
extensions[ext] = extensions.get(ext, 0) + 1
print(extensions)
Проверка: Добавьте файл без точки и обработайте этот случай отдельно