Знаете ли вы, что Python известен в коммьюнити как универсальный язык программирования? Это действительно так. Но его не обязательно использовать в каждом вашем проекте.

Вы можете писать на нем практически все что угодно: десктоп-приложения, игры, мобильные приложения, сайты и системное ПО. А еще он идеально подходит для реализации проектов, связанных с искусственным интеллектом и машинным обучением.

Я потратил несколько недель на поиск идей для проектов, которые могут заинтересовать Python-разработчиков. Очень надеюсь, что они помогут вам вновь заинтересоваться этим невероятным языком. Самое приятное, что с помощью этих увлекательных, но довольно сложных проектов вы сможете улучшить свои навыки программирования на Python.

1. Конструктор интерфейса приложения с помощью голосового помощника

Добавь кнопку!

Разработка десктоп-приложений сейчас уверенно прогрессирует. Существует множество конструкторов графического интерфейса, использующих систему drag&drop, и библиотек для распознавания речи. Идея состоит в том, чтобы объединить их, то есть сделать так, чтобы компьютер создавал графический интерфейс, основываясь на голосовых командах.

Это что-то новенькое, согласитесь. Я поискал и обнаружил, что никто еще не пытался реализовать подобный проект. Справедливости ради, его может быть чуть сложнее реализовать, чем все остальное, что предложено в этой статье.

Вот список того, что поможет вам начать реализацию этого проекта:

Довольно просто, не правда? Вы можете добавить больше команд — это довольно просто.

Это будет минимально жизнеспособный продукт (MVP). Именно поэтому не стесняйтесь писать много условных операторов (например, if… else).

Итак, вы добавили основные команды, теперь пора проверить их в деле. Попробуйте создать простенькую форму для авторизации.

Применить эту идею можно по-разному — ее можно использовать в разработке игр, сайтов и мобильных приложений. А программировать можно на разных языках!

2. Бот для ставок на основе ИИ

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

Вы слышали, например, о программах вроде AlphaGo Master, AlphaGo Zero и AlphaZero? Они позволяют играть в Го на профессиональном уровне. Вы можете даже скачать исходный код похожей программы Leela Zero — ссылка.

Я веду к тому, что ИИ становится умнее нас. Это значит, что его предсказания будут точнее наших, ведь он принимает во внимание больше параметров. А еще он учится на своих прошлых ошибках.

Давайте применим уже готовые решения для Python, чтобы написать собственного бота для ставок. Вот список библиотек, которые нам пригодятся:

Сначала вам нужно выбрать игру (например, теннис, футбол и т. д.) для прогнозирования результатов. Затем нужно найти историю матчей с исходами — их мы будем использовать для обучения модели.

Например, результаты теннисных матчей можно загрузить в формате .csv с сайта tennis-data.co.uk.

Если вы никогда не делали ставки, то вот принцип их работы:

  • Вы ставите 10 долларов на Роджера Федерера с коэффициентом 1,3.
  • Если он выиграет, вы получите 10 долларов (начальная сумма) плюс 3 доллара (прибыль).
  • Если он проиграет, вы теряете поставленные деньги.

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

Здесь вы можете скачать исходный код бота для ставок, реализованный Эдуардом Томасом — ссылка.

3. Бот для трейдинга

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

Возникает закономерный вопрос — а может ли ИИ правильно предсказать колебания цен на акции?

Ответ — да.

Чтобы начать, нам необходимо получить нужные данные:

  • Yahoo! Finance. Здесь можно получить данные о ценах на акции.
  • Alpha Vantage. API для работы с финансовыми данными

Эти руководства от Investopedia помогут в обучении бота.

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

Вы можете скачать исходный код бота для трейдинга, название которого freqtrade. Ссылка — здесь. Он написан на Python и основан сразу на нескольких алгоритмах машинного обучения.

4. Джарвис из «Железного человека»

В основе этой идеи лежит виртуальный ассистент из фильма «Железный человек». Его сюжет завязан вокруг технологий, роботов и ИИ.

В этом фильме главный герой создал себе виртуального помощника на основе ИИ. Ассистент, известный как Джарвис, помогает Железному человеку в его повседневных делах.

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

Я бы посоветовал эти:

Для начала можно написать код для таких команд:

Использовать этого ассистента можно в разных задачах:

  • Установка будильника на вашем смартфоне.
  • Вы можете следить за камерой видеонаблюдения. Например, можете следить за людьми за дверью. Можете добавить и другие функции: обнаружение и распознавание лиц, к примеру. С помощью нее вы можете понять кто у вас за дверью и сколько их.
  • Открытие/закрытие окон в комнате.
  • Включение/выключение света.
  • Автоматический ответ на электронные письма.
  • Отслеживание вашего расписания.

5. Мониторинг сайта на наличие новых концертов определенного исполнителя

Songkick — это популярный сервис, который предоставляет информацию о предстоящих концертах. Его API можно использовать для поиска предстоящих концертов по:

  • исполнителю,
  • местоположению,
  • месту проведения,
  • дате и времени.

Вы можете создать скрипт Python, использующий API Songkick. Он будет ежедневно проверять концерты по указанным параметрам. Когда такой найдется, он отправит вам письмо с датой концерта.

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

Но выход есть — вы можете отображать ссылку в вашем приложении в первозданном виде. После этого вы вручную зайдете на сайт и решите вопрос с покупкой билетов.

6. Автоматическое обновление бесплатных сертификатов Let’s Encrypt

Let’s Encrypt — центр сертификации, предлагающий бесплатные сертификаты SSL. Проблема заключается в том, что эти сертификаты действительны лишь 90 дней. По истечении 90 дней их необходимо продлить.

Как мне кажется, это отличный сценарий для автоматизации с помощью Python. Мы можем написать код, который автоматически обновляет SSL-сертификаты сайта еще до истечения срока их действия.

В качестве источника вдохновения можете посмотреть этот код — ссылка.

7. Поиск нужных людей в толпе

Власти в наше время устанавливают огромное множество камер в общественных местах. Цель у этого проста — безопасность граждан. Большинство этих камер предназначены для записи видео. Но вот проблема — после извлечения записей судебным экспертам приходится вручную распознавать людей на видео.

Но что если написать программу на Python, которая будет распознавать людей в объективе камеры в режиме реального времени? Вам будут нужны данные с биометрией граждан, а они принадлежат государству — вы вряд ли владеете ими.

Вместо этого можно создать базу данных с членами вашей семьи.

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

8. Отслеживание контактов

Отслеживание контактов — способ идентификации людей, которые контактировали друг с другом в определенный период времени. Особенно полезно это во время пандемии COVID-19 или ВИЧ. Причина в том, что остановить распространение болезни очень тяжело, если не знать ее носителей.

В этом проекте мы можем использовать Python в связке с алгоритмом машинного обучения DBSCAN (плотностный алгоритм пространственной кластеризации с присутствием шума).

Так как этот проект несерьезный, то вы не получите официальных данных. Но выход есть — можете сгенерировать тестовые данные с помощью Mockaroo.

Реализацию проекта можете посмотреть здесь.

9. Автоматический перенос файлов из одной папки в другую

Это простенькая программа, которую можно реализовать на Python. Ее суть заключается в том, что она постоянно отслеживает определенную папку. Как только в нее добавляется какой-то файл, она проверяет его расширение и перемещает в заранее выбранную папку.

Например, вы можете отслеживать папку с загрузками. Как только вы скачиваете какоахй-то файл, он перемещает в определенную папку автоматически. Она зависит от расширения файла.

Файлы .exe — это, скорее всего, установочный файл, поэтому следует переместить его в папку «Софт». А вот изображения (png, jpg, gif) переместятся в папку «Изображения».

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

10. Парсинг ссылок на интересующие вас YouTube-видео

Создайте приложение, которое собирает список видео, которые понадобятся вам для освоения будущей работы, например.

Допустим, чтобы стать веб-разработчиком, вам нужно освоить:

  • HTML5,
  • CSS3,
  • JavaScript,
  • Backend language (PHP, Node.js, Python, ASP.NET, or Java),
  • Bootstrap 4,
  • WordPress,
  • Backend Framework (Laravel, Codeigniter, Django, Flask, etc.)
  • и т.д.

После ввода нужных навыков вы жмете на кнопку «Получить план». Суть программы состоит в том, что она ищет релевантные плейлисты и видео по каждому введенному навыку. Если количество видео будет слишком большим, то программа выберет те, у которых больше всего лайков/просмотров/комментариев.

После этого наша программа группирует эти видео по навыкам, отображает их превью, названия и ссылки на них.

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

Затем пользователь сможет посмотреть эти видео, чтобы пошагово освоить необходимые навыки.

Заключение

Бросайте вызов сложным проектам и будьте активны — именно так вы улучшите свои навыки, откроете себя чему-то новому. Проявите свои творческие таланты — превратите свои идеи в причины для гордости.

Большинство проектов, о которых мы поговорили, можно использовать в дипломной работе. Или в качестве еще одного проекта в портфолио.

Перевод статьи: 10 Crazy Cool Project Ideas for Python Developers