Вы заканчиваете очередной туториал. Вы переписали каждую строчку кода, запустили все примеры и убедились, что всё работает. Но стоит вам открыть пустой редактор, чтобы создать что-то своё, как мысли улетучиваются. Ни одной идеи в голове.
Почти каждый новичок попадает в ловушку туториалов (обычно сразу после первого курса по Python). Можно целыми днями читать про циклы for, но как только никто не говорит вам, что именно писать, мозг буквально зависает.
Понимать, как выглядит код, и писать его самостоятельно — это два совершенно разных навыка. Единственный способ перейти от первого ко второму — начать создавать проекты. Самостоятельно.
И нет, эти проекты не обязаны быть полезными. Вы не выпускаете коммерческое приложение и не помогаете проектам с открытым исходным кодом. Вам просто нужны маленькие, забавные программки, которые работают — одна за другой, пока ваш мозг не перестанет впадать в ступор.
Именно для этого и написана эта статья. Ниже представлены 13 простых проектов на Python, каждый из которых можно завершить за время от 10 минут до часа. Каждый проект учит одной-двум вещам, не более. И в итоге у вас останется работающий на вашем компьютере файл, написанный лично вами.
Еще не готовы к самостоятельной разработке? Ничего страшного! Любой большой путь начинается с азов. Изучите основы компьютерной грамотности и заложите прочный фундамент, прежде чем сделать следующий шаг.
Почему нужно писать код, а не просто смотреть туториалы?
Потому что просмотр туториалов создает иллюзию обучения, но на самом деле они думают за вас. Самостоятельная разработка заставляет принимать решения вас. Вам приходится придумывать имена переменным, выбирать подходящий цикл и разбираться, почему код вывел None вместо нужного числа.
Маленькие проекты также отлично решают проблему с мотивацией. Двухнедельный проект звучит солидно — ровно до тех пор, пока вы не застрянете на полпути и не забросите его навсегда. А 30-минутный проект вы закончите уже сегодня. Вы получите работающий файл и маленькую победу, а именно такие победы заставляют вас снова открыть редактор завтра.

1. Игра «Угадай число»
Классика жанра. Компьютер загадывает число от 1 до 100, вы пытаетесь его угадать, а программа подсказывает «слишком много» или «слишком мало», пока вы не найдете верный ответ. Первая настоящая программа для большинства разработчиков, и не просто так.
import random
secret = random.randint(1, 100)
guesses = 0
while True:
guess = int(input("Guess a number (1-100): "))
guesses += 1
if guess < secret:
print("Too low")
elif guess > secret:
print("Too high")
else:
print(f"Got it in {guesses} guesses")
break
Чему вы научитесь: циклам while, условным операторам, работе с модулем random и преобразованию ввода пользователя в число. Когда всё заработает, добавьте ограничение на количество попыток, чтобы игра завершалась, если вы не уложились в лимит.
2. Генератор историй (Mad Libs)
Попросите пользователя ввести несколько слов — существительное, глагол, прилагательное — подставьте их в забавный шаблон предложения и выведите результат на экран. Десять минут от начала до конца.
noun = input("Noun: ")
verb = input("Verb: ")
adjective = input("Adjective: ")
place = input("A place: ")
story = f"Yesterday I went to the {place} and saw a {adjective} {noun} that started to {verb}."
print(story)
Чему вы научитесь: работе с f-строками, последовательному получению нескольких пользовательских вводов и сборке строк из переменных. В будущем проект легко расширить, добавив более длинные истории или список шаблонов, выбираемых случайным образом.
3. Симулятор броска кубика
Бросить один кубик. Бросить два. Бросить 20-гранный кубик для настольных игр. Всего две строчки логики и любая обертка на ваш вкус.
import random
def roll(sides=6, count=1):
return [random.randint(1, sides) for _ in range(count)]
print(roll(6, 2)) # rolls two six-sided dice
print(roll(20)) # rolls one d20
Чему вы научитесь: функциям со значениями по умолчанию, генераторам списков и вызову одной и той же функции с разными аргументами. Когда всё заработает, добавьте простое меню, чтобы пользователь мог сам выбирать количество граней и кубиков при запуске.
4. Простой калькулятор
Сложение, вычитание, умножение, деление. Два числа, один оператор. Да, калькуляторы уже существуют. Но суть не в этом. Суть в том, чтобы самостоятельно соединить все детали воедино и заметить, что именно вы упустили при первой попытке.
def calc(a, b, op):
if op == "+": return a + b
if op == "-": return a - b
if op == "*": return a * b
if op == "/":
if b == 0:
return "Can't divide by zero"
return a / b
a = float(input("First number: "))
op = input("Operator (+, -, *, /): ")
b = float(input("Second number: "))
print(calc(a, b, op))
Чему вы научитесь: написанию функций, ветвлению с помощью if и обработке каверзных крайних случаев (деление на ноль). Хотите усложнить задачу? Добавьте поддержку цепочек вычислений.
5. Камень, ножницы, бумага
Вы выбираете один вариант, компьютер — другой, а правила определяют победителя. Отличный способ попрактиковаться в создании игрового цикла и освоиться со словарями в качестве таблиц соответствия.
import random
options = ["rock", "paper", "scissors"]
wins_against = {"rock": "scissors", "paper": "rock", "scissors": "paper"}
you = input("Pick rock, paper, or scissors: ").lower()
cpu = random.choice(options)
print(f"Computer picked {cpu}.")
if you == cpu:
print("Tie")
elif wins_against[you] == cpu:
print("You win")
else:
print("Computer wins")
Чему вы научитесь: использованию словарей для быстрого поиска данных, методу random.choice и сравнению строк. Оберните всё это в цикл while и ведите подсчет очков по раундам — и вот вы уже создали мини-игру за один вечер.
6. Генератор паролей
Создайте случайный пароль из N символов, используя буквы, цифры и спецсимволы. Полезно, просто и пишется за 15 минут. Такую утилиту вы вполне можете оставить себе для реального использования.
import random
import string
def make_password(length=12):
pool = string.ascii_letters + string.digits + string.punctuation
return "".join(random.choice(pool) for _ in range(length))
print(make_password(16))
Чему вы научитесь: работе с модулем string, объединению символов в одну строку и случайному выбору элементов из набора. Добавьте переключатель для исключения спецсимволов — для систем, которые не любят пунктуацию (а таких систем гораздо больше, чем кажется).
7. Список задач в терминале
Простое меню для добавления, просмотра и удаления задач прямо в терминале. Никаких баз данных и сложных настроек — обычный список Python, который существует, пока программа запущена. Этого вполне достаточно для обучения.
todos = []
while True:
cmd = input("Command (add/list/remove/quit): ")
if cmd == "add":
todos.append(input("Task: "))
elif cmd == "list":
for i, t in enumerate(todos, 1):
print(f"{i}. {t}")
elif cmd == "remove":
idx = int(input("Index to remove: ")) - 1
if 0 <= idx < len(todos):
todos.pop(idx)
elif cmd == "quit":
break
Чему вы научитесь: созданию консольного меню, изменению списков, функции enumerate и небольшому трюку для нумерации элементов с единицы. В следующей версии попробуйте сохранять задачи в текстовый файл, чтобы они не пропадали после закрытия программы. Именно тогда проект начнет напоминать настоящее приложение.
Coddy превращает практику Python в ежедневную привычку благодаря геймификации, системе серий дней, очкам опыта (XP) и коротким урокам, которые мотивируют заходить в приложение, даже когда мотивация падает.
8. Счетчик слов и символов
Вставьте текст и получите количество слов, символов, а также самое часто встречающееся слово. Полезно, когда вы пишете тексты с жесткими ограничениями по объему — а с этим приходится сталкиваться довольно часто.
from collections import Counter
text = input("Paste your text: ")
words = text.split()
chars = len(text)
most_common = Counter(words).most_common(1)
print(f"Words: {len(words)}")
print(f"Characters: {chars}")
print(f"Most common word: {most_common[0][0]} ({most_common[0][1]} times)")
Чему вы научитесь: работе с модулем collections, методу .split() и извлечению значений из результатов работы класса Counter. Попробуйте исключить из подсчета короткие союзы и предлоги, чтобы получить более точные результаты — иначе самым частым словом всегда будет какой-нибудь предлог, который не несет полезной информации.
9. Калькулятор чаевых
Общая сумма счета, процент чаевых и разделение суммы между гостями. Тот самый полезный мини-инструмент, которым вы будете пользоваться спустя годы, давно забыв, что написали его сами.
bill = float(input("Bill total: "))
tip_pct = float(input("Tip percentage (e.g., 18): "))
people = int(input("How many people: "))
tip = bill * (tip_pct / 100)
total = bill + tip
per_person = total / people
print(f"Tip: {tip:.2f}")
print(f"Total: {total:.2f}")
print(f"Per person: {per_person:.2f}")
Чему вы научитесь: математическим операторам, преобразованию ввода в числа и округлению до двух знаков после запятой с помощью форматирования :.2f. Усложните задачу: округляйте сумму на человека в большую сторону, чтобы никто за столом не остался в обиде.
10. Таймер обратного отсчета
Вы вводите количество секунд, и программа ведет обратный отсчет до нуля. Крошечный, приятный проект, который после сборки можно использовать как таймер для перерывов или работы по методу Pomodoro.
import time
seconds = int(input("Seconds: "))
while seconds >= 0:
mins, secs = divmod(seconds, 60)
print(f"{mins:02d}:{secs:02d}", end="\r")
time.sleep(1)
seconds -= 1
print("Time's up ")
Чему вы научитесь: работе с модулем time, функции divmod для перевода секунд в минуты и секунды, а также трюку с символом возврата каретки \r для обновления текста в той же строке. Именно параметр end="\r" делает таймер «живым», не позволяя ему забивать терминал бесконечными новыми строками.
11. Генератор случайных цитат
Список цитат — мотивирующих, смешных, про программирование, каких угодно — из которого программа при запуске выбирает и выводит одну случайную. Проще некуда. Но всё равно сделайте это.
import random
quotes = [
"The only way to learn a new programming language is by writing programs in it.",
"Programs must be written for people to read, and only incidentally for machines to execute.",
"Premature optimization is the root of all evil.",
"Simplicity is the soul of efficiency.",
"Code is like humor. When you have to explain it, it's bad.",
]
print(random.choice(quotes))
Чему вы научитесь: основам работы со списками, методу random.choice и созданию, пожалуй, самой маленькой полезной программы на этом языке. Настройте ее запуск при открытии терминала, чтобы каждый раз видеть новую цитату — такие приятные мелочи делают процесс программирования гораздо увлекательнее.
12. Игра «Виселица» (упрощенная)
Компьютер загадывает слово, показывает прочерки вместо букв, а пользователь пытается их угадать. Игра заканчивается после шести ошибок. Этот проект сложнее остальных, но его вполне можно написать за час, если не усложнять детали.
import random
words = ["python", "syntax", "variable", "function", "module"]
secret = random.choice(words)
guessed = set()
wrong = 0
while wrong < 6:
display = "".join(c if c in guessed else "_" for c in secret)
print(display)
if "_" not in display:
print("You won")
break
letter = input("Guess a letter: ").lower()
if letter in secret:
guessed.add(letter)
else:
wrong += 1
print(f"Wrong. {6 - wrong} tries left.")
else:
print(f"You lost. The word was {secret}.")
Чему вы научитесь: работе со множествами (sets), сборке строки с условием внутри нее и малоизвестной конструкции while-else (блок else выполняется только в том случае, если цикл завершился без вызова break). Надоело угадывать одни и те же пять слов? Настройте чтение слов из внешнего файла. (Поверьте, они вам быстро надоедят).
13. Конвертер величин
Конвертация популярных величин: Цельсия в Фаренгейты, километров в мили, килограммов в фунты. Практично, быстро пишется и точно пригодится вам в будущем.
def c_to_f(c):
return c * 9/5 + 32
def km_to_mi(km):
return km * 0.621371
def kg_to_lb(kg):
return kg * 2.20462
print("1. Celsius to Fahrenheit")
print("2. Kilometers to miles")
print("3. Kilograms to pounds")
choice = input("Pick a converter: ")
value = float(input("Value: "))
if choice == "1":
print(c_to_f(value))
elif choice == "2":
print(km_to_mi(value))
elif choice == "3":
print(kg_to_lb(value))
Чему вы научитесь: объединению нескольких небольших функций в одном файле, созданию базового меню и ветвлению логики в зависимости от ввода пользователя. Когда реализуете прямую конвертацию, добавьте обратную (из Фаренгейтов в Цельсии, из миль в километры). Идея та же, усилий вдвое меньше, а практики — вдвое больше.
Как закрепить полученные знания
Написать один проект — дело нехитрое. Писать по проекту в день в течение двух недель — это уже привычка. И разница между теми, кто преодолевает уровень новичка в Python, и теми, кто сдается, кроется вовсе не в таланте или количестве свободного времени. Всё дело в регулярности практики.
Вот несколько советов, которые помогут вам закрепить навыки (в порядке важности):
-
Пишите код вручную, забудьте про копирование! Да, это может показаться скучным и монотонным. Но это единственный способ перенести шаблоны кода из глаз в мышечную память рук. Когда вы впервые напишете
import randomпо памяти, вы почувствуете, как в голове что-то щелкнуло. -
Ломайте код намеренно. Как только программа заработает, удалите строчку, закомментируйте функцию или переименуйте переменную и посмотрите, что произойдет. Поиск и исправление ошибок научат вас гораздо большему, чем само написание кода. (Это неочевидно, пока не попробуешь сам).
-
Пишите один и тот же проект дважды. Через неделю попробуйте снова написать игру «Угадай число» с нуля. Вторая попытка покажет, что из изученного действительно отложилось в голове (иногда этого оказывается меньше, чем хотелось бы, но это абсолютно нормально!).
-
Добавляйте новые фичи. Возьмите любой проект из списка и прикрутите к нему небольшое улучшение. Сохраняйте список задач в файл. Сделайте так, чтобы симулятор кубиков выводил результаты бросков по очереди. Именно в этих доработках кроется настоящая учеба, ведь никто не писал готовых инструкций именно под вашу задумку.
Если вам трудно поддерживать регулярность занятий, именно для этого и создан Coddy. Короткие пятиминутные уроки по Python, система ежедневных серий, которая мотивирует возвращаться к учебе, и подсказки от ИИ-помощника Bugsy прямо внутри урока, если вы зайдете в тупик.
Начать любой курс можно бесплатно, включая Python. Мы создали эту платформу как раз для тех, кто находится на вашем этапе: туториалы пройдены, уверенности в своих силах пока нет, но хочется практиковаться без ущерба для свободного времени.
Что создавать дальше?
Когда проекты из этого списка покажутся вам слишком простыми, это будет означать, что вы успешно преодолели первый барьер. Отличная работа! Следующий шаг — проекты среднего уровня. В них обычно используется пара сторонних библиотек, а также работа с файлами или сетью. Вот несколько идей для перехода на новый уровень:
- Приложение погоды с использованием библиотеки
requestsи бесплатного API погоды - Веб-парсер на
BeautifulSoup, который собирает заголовки новостей с вашего любимого сайта - Текстовый квест с несколькими игровыми локациями и инвентарем персонажа
- Таймер Pomodoro, который записывает рабочие сессии в CSV-файл
- Простое веб-приложение на Flask, отображающее одну страницу со случайной шуткой
Ни один из этих проектов не является сверхсложным. Они просто объединяют две-три вещи, которые вы уже умеете делать, и один новый модуль. Выбирайте то, что кажется вам наиболее интересным — именно такой проект вы гарантированно доведете до конца.
Туториалы перестают работать в тот момент, когда они оставляют вас наедине с кодом и просят думать самостоятельно. Проекты — даже самые простые и забавные — заставляют ваш мозг работать. Напишите достаточное их количество, и ловушка туториалов перестанет быть для вас угрозой.
Coddy поможет вам перейти от пассивного просмотра к реальному написанию кода благодаря пятиминутным урокам по Python, ежедневным сериям занятий и ИИ-помощнику Bugsy, который дает подсказки, а не готовые ответы.
Share this article
About the Author
Coddy Team
Editorial Team
Frequently Asked Questions
Какой самый простой проект на Python для новичка?
Стандартный ответ — игра «Угадай число». Она короткая, объединяет в одной программе ввод данных, циклы и условия, а при запуске ощущается как настоящая игра. Большинство людей справляются с ней за 20 минут, даже если они только что узнали, как работает цикл while.
Сколько времени должны занимать простые проекты на Python?
От десяти минут до часа. Если вы тратите на один проект три часа, то он либо слишком сложен для вашего текущего уровня, либо вы увязли в кроличьей норе отладки, из которой пора выбираться. Выберите проект поменьше, закончите его и вернитесь к этому позже.
Нужно ли мне что-то устанавливать для выполнения этих проектов?
Да, если вы хотите запускать их локально, и нет, если не хотите. Установка Python с сайта python.org занимает около пяти минут. Или вы можете вообще пропустить установку и запускать их в онлайн-песочнице прямо в браузере, например, внутри Coddy — это вариант, не требующий никакой настройки.
Подходят ли эти проекты на Python для резюме?
Сами по себе — нет. Проект для резюме обычно требует большей глубины: например, небольшое веб-приложение, скрипт, который вы использовали для автоматизации реальной задачи на работе, или вклад в open-source проект. Эти 13 проектов — лишь ступеньки для обретения уверенности, а не готовое портфолио. Они подготовят вас к созданию того, что действительно стоит добавить в резюме.
Какие концепции Python я изучу благодаря этим проектам?
В этих 13 проектах вы задействуете переменные, ввод и вывод, условные конструкции, циклы, функции, списки, словари, множества, модуль random, модуль time, f-strings, list comprehensions и пару модулей стандартной библиотеки, таких как collections и string. Это солидная рабочая база языка.
Что делать, если мой код не работает?
Прочитайте сообщение об ошибке. Большинство ошибок новичков почти дословно объясняют, что пошло не так, обычно прямо на строке над тем местом, где у вас началась паника. Загуглите сообщение об ошибке, попросите ИИ-помощника вроде Bugsy объяснить его или вставьте на форум. Отладка — это навык, который нарабатывается так же, как и написание кода, через практику.
Можно ли выполнять эти проекты на телефоне?
Да. Python работает в мобильных средах разработки, включая приложение Coddy, в которое встроен code playground. Вы не напишете корпоративное ПО на экране размером с ладонь, но небольшие практические проекты отлично подходят для этого. К тому же, многие люди на телефоне практикуются гораздо чаще, чем на ноутбуке.
Каков следующий шаг после простых проектов на Python?
Проекты среднего уровня, объединяющие больше концепций: небольшой web scraper, API client, приложение на Flask или Django, отдающее веб-страницу, или скрипт, обрабатывающий файлы в папке. Всё, что задействует новую библиотеку и подключается к чему-то внешнему, станет отличным следующим шагом. Выберите то, что решает небольшую проблему в вашей собственной жизни. Именно такой проект вы доведете до конца.



