Внимание: в этой статье нет партнёрских ссылок.

Когда я впервые начинал изучать Python, я не знал, что делать с моими новыми навыками дальше. Поэтому они медленно умирали. В 2019 году я смог посвятить больше времени освоению Python и приступил к его изучению с самого начала. На этот раз мне удалось увидеть потенциал этого нового языка.

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

Например, мы можем разделять слова или выбирать элемент из списка… Отлично, но как это использовать?

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

Сегодня мы рассмотрим семь способов использовать вновь приобретённые знания Python.

  1. Задачи программирования.
  2. Данные и статистика.
  3. Веб-разработка.
  4. Графические интерфейсы (GUI).
  5. Практическая работа с конвейером задач, скрипты Python.
  6. Машинное обучение.
  7. Веб-скрейпинг и веб-автоматизация.

1. Задачи программирования

Если забить в поисковик «задачи на Python», найдётся множество ресурсов, где вы сможете испытать себя. Не только применить свои знания Python, но и поработать над чем-то более важным  —  навыками решения задач.

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

Codewars

Создав учётную запись в codewars, можно просматривать самые разные задачи:

Снимок экрана в codewars

The Python Quiz

Хотите проверить свои знания Python, в том числе теорию? Тогда загляните на thepythonquiz:

На The Python Quiz проверяется знание теории и код.

Введя свой вариант ответа, можно увидеть правильный ответ, информацию по теме вопроса и ссылку для дальнейшего чтения:

Вы можете ошибиться, зато узнаете что-то новое.

Постановочные (или реальные) собеседования для программистов

Ещё один способ протестировать навыки, который мне очень нравится в последнее время,  —  это написание кода на собеседованиях для программистов или во время имитации таких собеседований. На YouTube много видеороликов, посвящённых прохождению собеседований. Вопросы там отличные. Мозг будет вам благодарен.

Посмотрите вот это видео с примером собеседования программиста/инженера-разработчика.

Вот что спрашивают на видео:

Дано: list и sum_number. Проверьте, равна ли сумма любых двух элементов в списке sum_number.

assert func([1,2,3,4] , 7) == True
assert func([1,1,1,1] , 9) == False

Вот мои рассуждения, перед тем как я посмотрел решение:

А вот мой код:

def list_elements_sum(input_list , sum_check):
    #проходим циклом по списку
    for index,value in enumerate(input_list):
        #последний индекс работать не нужно, ведь он уже охвачен
        if index != (len(input_list)-1):

            #суммируем элемент цикла с остальной частью списка
            for inner in range(index+1, len(input_list)):
                add_item = input_list[inner]
                sum_current = value + add_item
                #сверяем сумму с sum_check, возвращаем результат
                if sum_current == sum_check:
                    return True

    return False

assert list_elements_sum([1,2,5,6,4,3,2,3,1] , 11) == True
assert list_elements_sum([1,2,5,6,4,3,2,3,1] , 66) == False

Но после просмотра видео чувствую себя полным идиотом и кое-что узнаю.

Несмотря на то, что инженер Google использовал C++, я перевел всё в Python вот так:

И код:

def list_elements_sum(input_list , sum_check):
    #список для хранения дополнений
    complements = []

    for index,value in enumerate(input_list):
        #получаем дополнение для текущего значения
        check_sum = sum_check-value

        #если значение находится в списке дополнений, совпадение найдено
        if value in complements:
            return True

        #если значения в дополнениях нет, добавляем его в список дополнений и переходим к следующему
        else:
            complements.append(check_sum)

    return False


assert list_elements_sum([1,2,3,4] , 9) == False
assert list_elements_sum([1,2,3,4] , 7) == True

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

2. Анализ данных

Python  —  популярный язык для дата-сайентистов. Неудивительно, ведь здесь такой инструментарий! Так что людям нравится.

Если вы хотели бы работать с наукой о данных, обратите внимание на Jupyter Notebook. Проще всего начать с установки Anaconda. Можно запустить Jupyter из средства запуска Anaconda вместе со множеством других инструментов.

Другие интересные библиотеки, с которыми надо ознакомиться:

С помощью Jupyter можно быстро визуализировать данные. Рассмотрим простой пример, где у нас есть данные о двух детях, Генри и Анджеле. Вы легко определите, кто из них первенец, если у вас есть дети.

исходные чистые данные

Этот лист экспортируется в CSV-файл, который мы будем использовать для дальнейшей разработки:

представление данных в формате CSV

Мы можем использовать эти данные с помощью pandas:

import pandas as pd

data = pd.read_csv('child_data.csv')

data.head()
Все данные из CSV-файла

Если понадобятся только данные Генри, можно воспользоваться встроенными фильтрами pandas.

import pandas as pd
data = pd.read_csv('child_data.csv')
data.loc[data['Child'] == 'Henry']
Данные только по Генри

Визуальное представление

Если добавить в этот микс matplotlib, у нас будет множество вариантов поиграть с этими данными. Например, мне захотелось увидеть данные о весе Генри в виде графика.

import pandas as pd
import matplotlib.pyplot as pltdata = pd.read_csv('child_data.csv')henry_sort = data.loc[data['Child'] == 'Henry']
henry_dates_x, henry_weight_y = henry_sort['Date'] , henry_sort['Weight (kg)']plt.plot(henry_dates_x , henry_weight_y)
plt.suptitle('Henry\'s Weight' , fontsize=20)
plt.xlabel('DATE', fontsize=12)
plt.ylabel('Weight (kg)', fontsize=12)

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

3. Веб-разработка

При упоминании о веб-разработке в голове всплывают CSS, JavaScript и HTML. Но Python тоже можно использовать. Здесь есть несколько платформ для разработки приложений.

Instagram, Pinterest и National Geographic используют Django.(DjangoProject)

Основные фреймворки для изучения  —  Django, Flask и Pyramid.

Хотите подробнее ознакомиться с этими фреймворками? Тогда рекомендую YouTube-канал Кори Шафера. Там у него серия учебных видео, посвящённых Flask и Django.

4. Создание графических интерфейсов

Возможно, при изучении Python вы уже имели краткое знакомство с Tkinter. Tkinter входит в стандартную поставку Python. Можете импортировать эту графическую библиотеку и сразу же начать её использовать.

from tkinter import *

window = Tk()

window.title('World\'s Best Window Title')

lbl = Label(window, text='Watch out for the button below!')
btn = Button(window, text='Press Me')

lbl.pack()
btn.pack()

window.mainloop()

Если хотите поэкспериментировать с другими библиотеками для создания графических интерфейсов с помощью Python, вот некоторые из них:

5. Скрипты Python, помогающие в конвейере задач

Python не должен быть большим и тяжёлым. Вы можете использовать его для автоматизации своих задач. И здесь помогает скриптинг. Этим словом часто называют создание небольших фрагментов кода, облегчающих выполнение определённых задач.

Представьте, сколько пользы вы принесёте на своём рабочем месте, если сможете с помощью скриптинга за один час снизить рабочую нагрузку со 100 до 10 часов. Таким образом можно сэкономить 89 часов работы. А это больше двух недель. Скорее сообщите это своему начальнику. Или нет, не делайте этого. Лучше потратьте эти 89 часов на чтение статей, посвящённых Python.

К типичным задачам относится работа с файлами или папками, электронными таблицами, электронной почтой или задачи ввода-вывода. Обязательно поэкспериментируйте с этими библиотеками:

чтобы привыкнуть к работе с файлами и папками.

Некоторые сервисы предлагают интерфейсы API. С помощью их систем вы можете создавать программы, открывая новый мир возможностей. Например, использовать Google’s API для работы с Google Sheets.

Другие интересные API:

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

Представьте себе возможности…

6. Машинное обучение

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

«Машинное обучение — это изучение компьютерных алгоритмов, которые автоматически улучшаются по мере накопления опыта»,  —  сказано в «Википедии».

Обучающие данные используются, чтобы научить алгоритмы делать прогнозы или принимать решения самостоятельно.

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

Вот несколько популярных инструментов, которые помогут вам двигаться в правильном направлении:

TensorFlow  —  это комплексная платформа с открытым исходным кодом для машинного обучения.Она имеет развитую, гибкую экосистему инструментов, библиотек и ресурсов сообщества. Это позволяет исследователям использовать в машинном обучении самые современные технологии. А разработчики могут легко создавать и развёртывать приложения с реализованным в них функционалом машинного обучения.

Простые и эффективные инструменты для предиктивного анализа данных. Доступные для всех и многократно используемые в различных контекстах, они основаны на NumPy, SciPy и matplotlib. Имеют открытый исходный код, но допускает коммерческое использование (лицензия BSD).

OpenCV (библиотека компьютерного зрения с открытым исходным кодом: http://opencv.org)  —  это общедоступная библиотека, включающая в себя несколько сотен алгоритмов компьютерного зрения.

7. Веб-скрейпинг и веб-автоматизация

Знаете ли вы, что можете получать данные, извлекая их со страниц веб-ресурсов с помощью Python? Причём делать это за считанные секунды.

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

Примечание: большинство веб-сайтов не допускают веб-скрейпинг своих страниц, потому что он может создать большую нагрузку на их серверы. Убедитесь, что вам разрешён скрейпинг сайта.

Если хотите узнать, что вам разрешено делать на том или ином сайте, можете проверить файл robots.txt для этого сайта. Если ссылка на сайт запрещена в этом файле, вы не можете выполнять скрейпинг на сайте. На большинстве крупных веб-страниц также имеются Terms and Conditions (условия использования). Там можно отыскать подсказки.

Чтобы найти файл robots.txt, просто добавьте «/robots.txt» к URL-адресу. Например, examplesite.com/robots.txt.

Ресурсы, полезные для веб-скрейпинга:

Помню, как читал я об одном программисте, в рабочие обязанности которого входил ввод адресов электронной почты в соответствующее поле с подпиской их на рассылку новостей или что-то в этом роде. Чтобы сэкономить время, он решил автоматизировать этот процесс и настроить программу, которая бы делала всё это за него. Для этого ему понадобился selenium и CSV-файл со всеми адресами электронной почты. Так что он попивал себе кофе, пока программа зарабатывала ему деньги.

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

По веб-автоматизации есть куча всяких руководств и учебных материалов. Рекомендую для начала ознакомиться с видео Tech With Tim.

Заключение

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

Овладев основами, вы сможете начать своё путешествие. Следующий навык, который предстоит освоить,  —  это поиск возможностей. Для чего мне использовать этот язык? Что я могу сделать? Найти проекты для использования новых навыков может быть непросто.

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

Читайте также:

Читайте нас в Telegram, VK и Яндекс.Дзен


Перевод статьи Martin Andersson Aaberge: 7 Ways to Take Your New Python Skills to the Next Level

Предыдущая статья4 принципа успешной поисковой системы и не только
Следующая статьяЛучшие приёмы HR от Google