Добавить в корзинуПозвонить
Найти в Дзене

40 проектов на языке Python для новичков и продвинутых разработчиков

40 проектов для начинающих и продвинутых программистов: консольные, десктопные, web и ИИ-приложения. В данной статье вы также сможете увидеть список полезных инструментов и библиотек, которые помогут в реализации этих и многих других проектов. Выбор проекта Python для начинающих Для начала выберите интересующую вас тему. Это позволит получить удовольствие и будет поддерживать мотивацию во время написания и завершения проекта. Для вашего первого проекта не выбирайте сложный проект. Это может вызвать проблемы на ранних этапах, которые могут привести к стрессу. Если вы все же решили взяться за сложный проект, разбейте его на более мелкие задачи и работайте над ними последовательно в соответствии с графиком. 1. Угадай число – компьютер выберет случайное число, а игроки должны будут по очереди угадывать число. При разработке используются: генератор случайных чисел, цикл while, условные конструкции if/else, переменные, целые числа и вывод на экран. Для генерации случайного числа можно исполь
Оглавление

40 проектов для начинающих и продвинутых программистов: консольные, десктопные, web и ИИ-приложения.

В данной статье вы также сможете увидеть список полезных инструментов и библиотек, которые помогут в реализации этих и многих других проектов.

Выбор проекта Python для начинающих

Для начала выберите интересующую вас тему. Это позволит получить удовольствие и будет поддерживать мотивацию во время написания и завершения проекта.

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

1. Угадай число – компьютер выберет случайное число, а игроки должны будут по очереди угадывать число.

При разработке используются: генератор случайных чисел, цикл while, условные конструкции if/else, переменные, целые числа и вывод на экран.

Для генерации случайного числа можно использовать функцию random.randint(1, 100) из модуля random.

Пример использования:

#Подключаем необходимые библиотеки
import random
number = random.randint(1, 100)
print("Я загадал число от 1 до 100. Попробуйте его угадать!")

Для проверки правильности ввода можно использовать условную конструкцию if/else.

Пример кода на Python:

guess = input("Введите ваше предположение: ")
if guess.isdigit():
guess = int(guess)
else:
print("Ошибка, введите число!")
continue
if guess > number:
print(f"Вы угадали число {guess}, но оно больше чем {number}")
elif guess < number:
print(f"Вы угадали число {guess}, но оно меньше чем {number}")
else:
print("Вы угадали!")

2. Камень, ножницы, бумага – мини-игра, в которую можно играть в одиночку с компьютером.

При разработке потребуются знания генератора случайных чисел, вывод на экран, обработка ввода, цикл while и оператор if/else.

Пример кода на Python:

#Подключаем необходимые библиотеки
import random

print("Добро пожаловать в игру 'Камень, ножницы, бумага'!")

options = ["Камень", "Ножницы", "Бумага"]
computer_choice = random.choice(options)
user_choice = input("Введите свой выбор (Камень, Ножницы, Бумага): ")
print("Компьютер выбрал: " + computer_choice)

if user_choice == computer_choice:
print("Ничья!")
elif user_choice == "Камень" and computer_choice == "Ножницы":
print("Вы победили!")
elif user_choice == "Ножницы" and computer_choice == "Бумага":
print("Вы победили!")
elif user_choice == "Бумага" and computer_choice == "Камень":
print("Вы победили!")
else:
print("Компьютер победил!")

3. Генератор MadLibs – игра, в которой в пробелы нужно вставлять глупые слова, а после зачитывать.

Для реализации понадобится понимание строк, переменных, конкатенация, ввод данных и вывод.

4. Генератор паролей – простое приложение, генерирующее случайный пароль.

Из навыков потребуется генератор случайных чисел, работа со строками, числами, вывод на экран, последовательности.

-2

Пример кода на Python:

#Подключаем необходимые библиотеки
import random
import string

def generate_password(length):
# Создаем строку, содержащую все возможные символы для пароля
characters = string.ascii_letters + string.digits + string.punctuation
# Генерируем случайный пароль заданной длины
password = ''.join(random.choice(characters) for i in range(length))
return password

password = generate_password(10)
print('Ваш сгенерированный пароль:', password)

5. Виселица – продвинутый вариант «угадай число». Игрок должен угадывать буквы в загаданном слове. Для упрощенной версии используйте только текст, без графики.

Потребуется опыт работы со списками, генератор случайных чисел, работа со строками, обработка ввода, вывод, цикл while, операторы if/else. Для списка слов воспользуйтесь словарем Sowpods.

6. Симулятор игры в кости – понадобится генератор случайных чисел, который будет генерировать случайные числа от 1 до 6, цикл while и вывод на экран для уточнения нужно ли сделать новый бросок, обработка ввода и цикл if/else для обработки введенного игроком значения.

-3

Вот пример реализации на Python:

#Подключаем необходимые библиотеки
import random
# Генерируем случайное число от 1 до 6
def roll_dice():
return random.randint(1, 6)
# Бросаем кости
def play_game():
dice1 = roll_dice()
dice2 = roll_dice()

# Выводим результаты броска
print("Вы бросили кости и получили:", dice1, "и", dice2)

# Проверяем результаты броска
if dice1 + dice2 == 7 or dice1 + dice2 == 11:
print("Поздравляем, вы выиграли!")
elif dice1 + dice2 == 2 or dice1 + dice2 == 3 or dice1 + dice2 == 12:
print("К сожалению, вы проиграли.")
else:
# Продолжаем бросать кости до тех пор, пока не выпадет сумма, равная результату первого броска или 7
point = dice1 + dice2
print("Ваша точка:", point)
while True:
input_str = input("Нажмите Enter, чтобы бросить кости еще раз, или введите q, чтобы закончить игру: ")
if input_str == "q":
print("Вы закончили игру.")
break else:
dice1 = roll_dice()
dice2 = roll_dice()
print("Вы бросили кости и получили:", dice1, "и", dice2)
if dice1 + dice2 == point:
print("Поздравляем, вы выиграли!")
break
elif dice1 + dice2 == 7:
print("К сожалению, вы проиграли.")
break
# Запускаем игру play_game()

Этот код генерирует случайные числа от 1 до 6 с помощью функции roll_dice, затем бросает кости и выводит результаты на экран. Если сумма результатов равна 7 или 11, игрок выигрывает. Если сумма результатов равна 2, 3 или 12, игрок проигрывает. В остальных случаях игрок продолжает бросать кости до тех пор, пока не выпадет сумма, равная результату первого броска или 7. Если игрок выбирает продолжить игру, программа генерирует новые случайные числа и продолжает проверять результаты до тех пор, пока игрок не выиграет или не проиграет.

7. Алгоритм двоичного поиска – структур данных, также известен как метод деления пополам. Возьмем список из 100 элементов, например, целые числа от 1 до 100. Пользователю будет предложено ввести число, которое программа будет искать в данном списке и выводить соответствующий результат. Во время поиска берется среднее значение и сравнивается с искомым. Если значение найдено, то возвращается результат об успехе. Если значение меньше, то дальше будет аналогичным образом рассматривать левая часть, т. е. та, что меньше среднего значения. В противном случае, рассматривается правая часть. И так будет происходить до тех пор, пока значение не будет найдено или список не окажется пуст.

Для реализации понадобится значение цикла, операторов if/else, ввод и вывод данных.

8. Текстовое приключение – простая игра квест, где игрок ходит по комнатам и получает описание комнат.

Для реализации понадобится обработка ввода, вывод данных, операторы if/else, цикл while. При реализации понадобится следить за направлением движения, создавать стены, двери, ограничение на перемещение.

Проекты Python для разработчиков Python среднего уровня

1. Будильник – приложение, которое будет присылать уведомления в назначенное время. Включите в него музыку, видео или картинки.

Вот пример кода на Python для создания простого будильника с музыкой:

#Подключаем необходимые библиотеки
import time
import webbrowser

# Введите время, когда нужно запустить будильник alarm_time = input("Введите время будильника (в формате ЧЧ:ММ:СС): ")

# Пока текущее время не равно времени будильника, ждем while time.strftime("%H:%M:%S") != alarm_time:
time.sleep(1)

# Открываем веб-страниц с музыкой или видео webbrowser.open("https://www.youtube.com/watch?v=dQw4w9WgXcQ")

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

2. Крестики нолики – игра, в которой два игрока рисуют на поле из 9 квадратиков каждый свою фигуру (крестик или нолик) до тех пор, пока не получат линию из 3-х одинаковых фигур или пока все квадратики не будут заполнены. В данном случае игру можно реализовать для одного игрока с компьютером, основная сложность будет в программировании ходов компьютера. Для реализации графики воспользуйтесь библиотекой PyGame.

Вот пример кода для игры крестики-нолики на Python с использованием Tkinter:

#Подключаем необходимые библиотеки
import tkinter as tk
from tkinter import messagebox

class TicTacToe: def __init__(self, master):
self.master = master
self.master.title("Крестики-нолики")
self.current_player = "X"
self.board = [" " for _ in range(9)]
self.buttons = []
for i in range(9):
button = tk.Button(self.master, text=" ", font=("Arial", 20), width=4, height=2, command=lambda i=i: self.make_move(i))
button.grid(row=i//3, column=i%3)
self.buttons.append(button)

def make_move(self, index):
if self.board[index] == " ":
self.board[index] = self.current_player
self.buttons[index].config(text=self.current_player)
if self.check_win():
messagebox.showinfo("Конец игры", f"Игрок {self.current_player} победил!")
self.reset()
elif self.check_draw():
messagebox.showinfo("Конец игры", "Ничья!")
self.reset()
else:
self.current_player = "O" if self.current_player == "X" else "X"
def check_win(self):
win_combinations = ((0, 1, 2), (3, 4, 5), (6, 7, 8), (0, 3, 6), (1, 4, 7), (2, 5, 8), (0, 4, 8), (2, 4, 6))
for combo in win_combinations:
if self.board[combo[0]] == self.board[combo[1]] == self.board[combo[2]] != " ":
return True
return False
def check_draw(self):
return " " not in self.board

def reset(self):
self.current_player = "X"
self.board = [" " for _ in range(9)]
for i in range(9):
self.buttons[i].config(text=" ")

root = tk.Tk()
game = TicTacToe(root)
root.mainloop()

3. Случайная статья в Википедии – в этом проекте приложение выдает случайную ссылку на статью Википедии. Программа уточняет у пользователя отобразить ли случайную статью в Википедии и при положительном ответе выводит страницу.

#Подключаем необходимые библиотеки
import requests
import webbrowser

# Получаем случайную статью из Википедии response = requests("https://ru.wikipedia.org/wiki/%D0%A1%D0%BB%D1%83%D1%87%D0%B0%D0%B9%D0%BD%D0%B0%D1%8F_%D1%81%D1%82%D0%B0%D1%82%D1%8C%D1%8F")
random_article_url = response.url

# Открываем случайную статью в браузере webbrowser.open(random_article_url)

4. Калькулятор – проект для реализации калькулятора с GUI, кнопками, возможностью ввода нескольких чисел, операций сложения, умножения, получения корня, возведения в степень, учета скобок, памяти. Для реализации могут понадобиться такие библиотеки, как Tkinter или PyQt, которые позволят создать графический интерфейс.

# Функция для сложения двух чисел
def add(x y):
return x + y

# Функция для вычитания двух чисел
def subtract(x, y):
return x - y

# Функция для умножения двух чисел
def multiply(x, y):
return x * y

# Функция деления двух чисел
def divide(x, y):
return x / y

# Выводим сообщение с инструкцией для пользователя
print("Выберите операцию:")
print("1. Сложение")
print("2. Вычитание")
print("3. Умножение")
print("4. Деление")

# Получаем выбор пользователя
choice = input("Введите номер операции (1/2/3/4): ")

# Получаем два числа от пользователя
num1 = float(input("Введите первое число: "))
num2 = float(input("Введите второе число: "))

# Выполняем выбранную операцию
if choice == '1':
print(num1, "+", num2, "=", add(num1, num2))

elif choice == '2':
print(num1, "-", num2, "=", subtract(num1, num2))

elif choice == '3':
print(num1, "*", num2, "=", multiply(num1, num2))

elif choice == '4':
print(num1, "/", num2, "=", divide(num1, num2))

else:
print("Неверный выбор операции"

5. Таймер обратного отсчета – настольное приложение с интерфейсом, в котором показывается таймер обратного отсчета до установленного события. В данном приложении можно установить таймер, сбросить таймер, выводить уведомления о наступлении события или заранее до наступления события.

6. Reddit-бот.

Reddit – соцсеть, в которой люди обсуждают интересы, делятся фото, видео, ссылками и т. д., на странице пользователя и на страницах сообществ, соответствующих тем (сабреддиты). Запрограммируйте бота для мониторинга этих сабреддитов, бот может предоставлять полезную информацию для читателей, экономя время модераторов сабреддита.

7. Instagram-бот – бот предназначен для автоматизации таких задач, как лайк, комментарий, подписка на учетные записи других людей. Ограничения по частоте, иначе в случае чрезмерной активности бот может быть деактивирован.

🐍1. Пишем бота для Instagram на Python

🐍2. Пишем telegram-бота на Python

8. Стеганография в Python.

Стеганография – передача или хранение информации с учетом сохранения в тайне самого факта такой передачи (хранения). В отличие от криптографии, скрывающей содержимое сообщения, стеганография скрывает существование сообщения. Сообщение будет выглядеть как что-либо иное, например, как изображение, статья, список покупок и т. д.

Проекты Python для продвинутых разработчиков Python

1. MP3-плейер – проект для прослушивания музыки, создайте MP3-плеер с листами, перемоткой, зацикливанием аудиозаписей и другими полезным функционалом.

Для реализации могут понадобится библиотеки для работы с GUI Tkinter или PyQt, для работы с аудио может понадобится библиотека librosa.

2. Тест скорости набора текста – проект позволит определить скорость набор текста пользователем. Реализуйте графический интерфейс с помощью библиотеки для работы с GUI, например, Tkinter или PyQt. От пользователя потребуется вводить текст. После ввода текста приложение выведет информацию о скорости набора, точности и количестве набранных слов в минуту. Пример проекта.

3. Менеджер файлов – проект для работы с файлами в системе. Например, аналог проводника в Windows. С помощью этого приложения можно просматривать, редактировать, перемещать, удалять файлы в системе. Проект затронет различные области знаний языка Python.

4. Создание блокчейна.

Блокчейн (цепь из блоков) – непрерывная последовательность блоков, содержащих информацию. Используется как финансовый инструмент, но применим и в других областях.

Для реализации понадобится библиотеки для работы с HTTP и руководство.

5. Проверка плагиата – приложение для проверки плагиата проверяет текст на принадлежность указанному автору.

Для реализации понадобится библиотека обработки естественного языка (такие библиотеки, как NLTK, TextBlob) и API Google.

6. Графический редактор – редактор картинок, наподобие Пэинта или Фотошопа.

Для реализации понадобится библиотека для работы с GUI, например, Tkinter или PyQt и виджет Canvas, который позволит работать с примитивами вроде линии, прямоугольника, текста, изображения.

7. Расширение сравнения цен – проект, который позволит сравнивать цены на разных сайтах, на отели, продукты, технику и т. д.

8. Загрузчик картинок с Instagram – используя заданные учетные данные, приложение будет искать фотографии друзей, размещенные в Instagram и загружать их фотографии.

Проекты Python в веб-разработке

1. Блог – создание блога позволит продемонстрировать навыки веб-разработки. Помимо знания Python, тут понадобится знание HTML и CSS, а также опыт работы с базами данных.

2. Создание интернет-магазина – создание интернет-магазина позволит как следует прокачать навыки бэкенда. Потребуется создать базу данных с таблицами, содержащими данные пользователей, товаров, поставщиков. Также потребуется работать с запросами к базе данных. Этот проект позволит погрузиться в предметную область.

3. Блокировщик веб-сайтов – это аналог популярных блокировщиков рекламы, который позволит блокировать назойливую рекламу.

4. Приложение для создания заметок – программа позволяет пользователю записывать заметки и просматривать записанное. В приложении придется сделать аккаунты и разделение доступов для того, чтобы у каждого пользователя были свои заметки. Благодаря тому, что это веб-проект доступ к заметкам открыт откуда угодно. Для реализации этого проекта подойдет фреймворк Django.

5. Агрегатор контента – это сайт, который собирает популярные статьи на конкретные темы и выдает пользователю. Для реализации понадобится база данных (например, MySQL или PostgreSQL) и библиотеки Python для работы с HTTP-запросами и парсингу контента.

6. Онлайн regex – инструмент для проверки и составления регулярных выражений. Регулярные выражения – это гибкий способ найти информацию в текстовом документе с хитрыми условиями. Например, с помощью регулярных выражений можно составить маску поиска для номера телефона, email или интернет-ссылки. Для реализации понадобится стандартная библиотеке re (содержит все необходимое для работы с регулярными выражениями) и веб-фреймворк, например, Django.

7. URL Shortener – проект позволит преобразовывать длинные, неудобные ссылки в короткие, уменьшая количество символов в URL. Для реализации данного проекта понадобится написать страницу с полем для ввода длинной ссылки, кнопкой и полем для вывода короткой ссылки. Также понадобится база данных для хранения ссылок. При открытии короткой ссылки сервер будет проверять наличие ссылки в базе и при наличии – перенаправлять пользователя по заданному ранее адресу. При отсутствии – будет выводиться страница 404.

8. Викторина – приложение, которое задает пользователям набор вопросов и подсчитывает очки за правильные ответы, а после выдает результат. При реализации можно сделать вопросы с таймером или вопросы, на которые будут сразу выдаваться информация о правильности ответов. Для проекта понадобится веб-фреймворк, например, Django и база данных, для хранения вопросов и ответов.

Проекты Python с искусственным интеллектом

1. Обработка фотографий – приложение для обработки фотографий в заданном стиле (художника или цветовой гамме).

Реализация данного приложения затрагивает компьютерное зрение и нейросети. Можно применить генеративно-состязательные нейронные сети (GAN).

2. Анализ новостей из интернета – программа аналитического характера, анализирует новости из интернета и делает на основании их прогнозы стоимости ценных бумаг, курсов акций или валют. Ожидать точных прогнозов не стоит, но этот проект позволит поработать с обработкой естественных языков (NLP), анализом временных рядов, парсингом и краулингом сайтов.

3. Распознавание лиц – проект, который встречается даже во время фотосъемки на телефон. Также можно добавить функционал дорисовки чего-либо: усов, кошачьих ушей, веснушек и т. д. Таких проектов много, но создать такой проект самостоятельно не менее интересно.

4. Подсчет числа элементов на изображении – проект связан с подсчетом кол-ва элементов на фотографии. Такие проекты используются на крупных предприятиях, например, для подсчета яиц или какой-либо другой штучной продукции в большом объеме, которую сложно подсчитать вручную или под которую сложно спроектировать универсальный механизм.

5. Массовое переименование файлов – допустим, есть большое количество изображений, которые необходимо переименовать.

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

6. Распознавание эмоций на видео – проект распознавания эмоций на видео. Для подобных проектов используются рекуррентные сети.

7. Семантическое определение границ – одна из классических задач для сверточных нейронных сетей – это выделение границ, разбитых на классы.

8. Семантическая сегментация – позволяет разделить объекты на классы по их структуре, ничего не зная об этих объектах, то есть еще до их распознавания.

Например, семантическая сегментация 3D-изображений выделяет отдельные сегменты изображений МРТ головного мозга.

Инструменты для разработки на Python

Среды разработки (IDE)

-4

PyCharm – IDE от компании JetBrains, поддерживает веб разработку на Django.

-5

IDLE – IDE для Python, созданная с помощью библиотеки Tkinterот создателя Python. Поставляется вместе с Python, кроссплатформенная.

Базовые инструменты

Setuptools – это библиотека процессов разработки пакетов, предназначенная для облегчения упаковки проектов Python за счет расширения стандартной библиотеки Python distutils.

virtualenv – менеджер виртуальной среды. Позволяет создавать виртуальные среды с пакетами. Разные песочницы имеют разные наборы пакетов, разных версий. Одну и ту же песочницу могут использовать разные проекты.

Pip – система управления пакетами, используется для установки и управления программными пакетами, написанными на Python.

Кроссплатформенная разработка

-6

BeeWare – набор инструментов для разработки и распространения нативных приложений на Python. Включает в себя Toga – кроссплатформенный инструмент для GUI, Briefcase – инструмент для упаковки проектов на языке Python в распространяемые артефакты для доставки конечным пользователям, Rubicon ObjC – библиотека для работы с Object C на iOS и Mac с помощью Python, Rubicon Java – для работы с Java-библиотеками на Python.

-7

Kivy – библиотека с открытым исходным кодом для быстрой разработки приложений. Кроссплатформенная, с поддержкой GPU-ускорителя, дружественная к разработке бизнес-приложений.

Web разработка

Bottle – быстрый и простой фреймворк для маленьких веб-приложений. Не имеет зависимостей, кроме Python Standard Library.

CherryPy – веб-фреймворк на Python. Спроектирован для быстрой разработки веб-приложений. Представляет надстройку над HTTP-протоколом. Может выступать в качестве веб-сервера, может работать под управлением другого серверного приложения, поддерживающего протокол WSGI. Не занимается задачами обработки шаблонов для ввода данных, доступом к БД, авторизацией пользователя.

Расширяется за счет фильтров, простых интерфейсов.

Django – фреймворк для разработки веб-приложений на языке Python с открытым исходным кодом. Используется для бэкенда веб-приложений. Использует шаблон MVC.

Библиотеки для работы с GUI

PyQt – GUI фрэймворк для python позволяет создавать приложения с графическим пользовательским интерфейсом. Разработан британской компанией Riverbank Computing.

Работает на платформах, поддерживаемых Qt: Linux. Unix, Mac, Windows.

Большой набор виджетов для графического интерфейса. Стили виджетов. Доступ к БД(ODBC, MySQL, PostgreSQL, Oracle)

Tkinter – Кроссплатформенная графическая библиотека, поставляется вместе с Python. Распространены на Linux/Unix. Написана создателем Python – Гвидо ван Россумом.

Библиотеки для создания игр

PyGame – набор модулей Python для написания компьютерных игр и мультимедиа приложения. Базируется на мультимедийной библиотеке SDL. Можно разрабатывать 2D-, 3D-игры. Также можно писать игры для мобильных устройств на базе Android.

Cocos 2D – кроссплатформенный фреймворк для разработки приложений и игр. Открытое программное обеспечение, написанное на языке Python.

Panda 3D – полноценный 3D движок с большим русскоязычным сообществом, где придется писать код, используя API движка. Включает в себя графику, звук, ввод-вывод, обнаружение столкновений. Открытое программное обеспечение.

Прочее

👉 librosa – библиотека для анализа музыки и аудио.

Позволяет обрабатывать аудио в виде временных рядов, извлекать признаки: темп, бит, такт, интервал, ритм и работать с Мел-кепстральными коэффициентами (MFCC).

👉 NLTK – пакет программ для символьной и статистической обработки естественного языка, написанных на Python. Библиотека поддерживает задачи классификации, стемминга, маркировки, синтаксического анализа и семантического рассуждения в Python.

👉 TextBlob – инструмент для новичков в NLP в Python. Библиотека построена на NLTK и представляет простой интерфейс для библиотеки NLTK. Позволяет решать задачи анализа настроений, POS-маркировки или извлечения именных фраз.

✤ ✤ ✤ ✤ ✤ ✤ ✤ ✤ ✤ ✤ ✤ ✤ ✤ ✤ ✤ ✤ ✤ ✤ ✤ ✤ ✤ ✤ ✤ ✤ ✤ ✤ ✤ ✤ ✤ ✤

❂ Полезные ссылочки: VK ГруппаTelegram Канал

Теги: #python #django #cherrypy #pygame #kivy #setuptools #panda3d #tkinter #customtkinter #librosa #pyqt #программирование #programming #модули #idle #maxim_dupley #2023