Python
Контрольные задачи по Python: мини-проекты для закрепления
Контрольные задачи нужны, чтобы проверить не отдельную команду, а умение собрать маленькую программу целиком. Мини-проект заставляет связать ввод, данные, функцию, проверку ошибок и понятный вывод
По этой теме полезно отдельно посмотреть Составьте еженедельное расписание занятий, чтобы расширить контекст и сравнить подходы
По этой теме полезно отдельно посмотреть Аннотации типов для декораторов в Python, чтобы расширить контекст и сравнить подходы
Как работать с мини-проектом
Сначала сделайте минимальную версию. Потом добавьте один неудобный случай: пустой ввод, повтор, неверный формат, отрицательное число или отсутствие данных. Не начинайте с красивого меню, если основная логика еще не работает
Проект 1. Список покупок
Нужно добавлять товары в список и выводить их по одному
items = []
def add_item(title):
title = title.strip()
if title:
items.append(title)
add_item("хлеб")
add_item(" ")
add_item("молоко")
for item in items:
print(item)
Усложнение: запретите дубли и добавьте удаление товара
Проект 2. Дневник расходов
Храните расходы списком словарей и считайте общую сумму
expenses = [
{"title": "кофе", "amount": 180},
{"title": "такси", "amount": 450},
]
total = 0
for expense in expenses:
total += expense["amount"]
print(total)
Усложнение: добавьте категории и сумму по каждой категории
Проект 3. Проверка пароля
Функция должна проверять длину, цифру и букву
def is_strong_password(password):
has_digit = any(char.isdigit() for char in password)
has_letter = any(char.isalpha() for char in password)
return len(password) >= 8 and has_digit and has_letter
print(is_strong_password("python"))
print(is_strong_password("python123"))
Усложнение: добавьте проверку спецсимвола и понятное сообщение об ошибке
Проект 4. Мини-статистика по оценкам
Посчитайте среднюю оценку и найдите лучшую
grades = [5, 4, 3, 5, 4]
if grades:
average = sum(grades) / len(grades)
best = max(grades)
print(average, best)
else:
print("Оценок пока нет")
Усложнение: посчитайте, сколько раз встречается каждая оценка
Проект 5. Поиск слова в тексте
Пользователь вводит слово, программа ищет его в тексте без учета регистра
text = "Python helps automate routine tasks"
query = "python"
found = query.lower() in text.lower()
print(found)
Усложнение: выведите не только True или False, а количество совпадений
Как понять, что задача зачтена
- программа запускается без ошибок
- есть функция или понятный отдельный блок логики
- проверен пустой ввод
- проверены повторы
- результат можно объяснить словами
- код можно изменить под похожую задачу
Проект 6. Конвертер температур
Функция переводит градусы Цельсия в Фаренгейты и обратно
def celsius_to_fahrenheit(value):
return value * 9 / 5 + 32
def fahrenheit_to_celsius(value):
return (value - 32) * 5 / 9
print(celsius_to_fahrenheit(0))
print(fahrenheit_to_celsius(32))
Усложнение: добавьте выбор направления через строку c_to_f или f_to_c
Проект 7. Маленький каталог книг
books = [
{"title": "Python", "year": 2024},
{"title": "SQL", "year": 2022},
]
def find_books(query):
result = []
for book in books:
if query.lower() in book["title"].lower():
result.append(book)
return result
print(find_books("py"))
Усложнение: добавьте фильтр по году и сообщение, если ничего не найдено
Финальная проверка
Выберите один мини-проект и восстановите его с чистого файла через день. Если можете написать основную логику без подсказки, материал действительно закрепился. Если нет, запишите конкретный блок, где застряли: список словарей, функция, условие, цикл или обработка пустых данных
Как выбрать проект под свой уровень
Если вы только начали, берите проект, где есть один список и две-три операции: добавить, показать, удалить. Если уже уверенно работаете со списками, добавьте словари, поиск и фильтрацию. Если хотите усложнить еще сильнее, сохраните данные в файл JSON
Пример сохранения:
import json
tasks = [
{"title": "повторить списки", "done": False},
{"title": "решить задачу", "done": True},
]
with open("tasks.json", "w", encoding="utf-8") as file:
json.dump(tasks, file, ensure_ascii=False, indent=2)
Пример чтения:
import json
with open("tasks.json", "r", encoding="utf-8") as file:
tasks = json.load(file)
print(tasks)
Так мини-проект становится похожим на настоящую программу: данные не исчезают после закрытия файла, а код начинает работать с внешним состоянием
Что показать в результате
В конце проекта у вас должны быть короткое описание, рабочий файл, три примера запуска и список проверок. Например: пустой список, один элемент, повтор, неверный ввод, удаление последнего элемента. Такой набор показывает, что вы не просто написали код, а подумали о поведении программы
Проект 8. Текстовый анализатор
Сделайте программу, которая принимает текст, считает количество слов, самое длинное слово и частоту каждого слова
text = "python python sql code"
words = text.split()
freq = {}
for word in words:
freq[word] = freq.get(word, 0) + 1
longest = ""
for word in words:
if len(word) > len(longest):
longest = word
print("Слов:", len(words))
print("Самое длинное:", longest)
print(freq)
Усложнение: уберите знаки препинания, приведите слова к нижнему регистру и обработайте пустую строку. Такой проект хорошо проверяет строки, списки, словари, циклы и функции одновременно
Финальная версия должна быть оформлена в функции: count_words, get_longest_word, get_word_frequency. Если каждая функция работает отдельно, весь проект становится проще проверять и дополнять
Как принять мини-проект у самого себя
Мини-проект считается готовым не тогда, когда он один раз напечатал красивый результат. Он готов, когда вы можете показать входные данные, объяснить каждую функцию и повторить проверку на неудобных случаях
Используйте простой порядок приемки:
- запустите проект на обычных данных
- проверьте пустой ввод
- проверьте повторяющиеся значения
- вынесите основную логику в функцию
- добавьте один пример, где пользователь ошибается
- напишите короткое описание результата своими словами
Пример маленькой приемки для текстового анализатора:
def count_words(text):
words = text.lower().split()
return len(words)
def has_word(text, query):
return query.lower() in text.lower().split()
print(count_words("Python Python SQL"))
print(count_words(""))
print(has_word("Python Python SQL", "python"))
print(has_word("Python Python SQL", "java"))
Такой формат помогает не растягивать учебный проект до бесконечности. Вы берете одну идею, делаете рабочий вариант, добавляете проверки и только после этого переходите к следующей задаче