Как начать программировать на Python

Если вы не знаете, с какого языка начать изучать программирование, — почитайте, что думает об освоении Python программист Skillbox Вадим Шандринов.

запись вебинара

 2 часа2  мин.

статья

 15 мин.

Экономия времени

 1ч. 47 мин.

 6 преимуществ Python

  1. Легко читаемый код — синтаксис языка построен таким образом, что он не позволяет писать «некрасивый» и неструктурированный код. Программа на Python выглядит как английский текст.
  2. Переносимость языка — Python является интерпретируемым языком и работает под виртуальной машиной, а это означает, что его можно запускать на разных платформах: MacOS, Linux, Windows, Android, iOS и прочих.
  3. Ускоренный цикл разработки — языку Python, в отличие от компилируемых языков программирования, таких как С, С++, С#, не нужно время на сборку и компиляцию программы, поэтому программа на Python быстро запускается и сразу показывает результат.
  4. Множество пакетов — язык имеет большое количество готовых решений и пакетов.
  5. Поддержка всех стилей программирования — императивный (приказной), объектный, функциональный.
  6. Низкий порог входа — за несколько дней можно начать писать свои первые программы.

Python и другие языки

В 2017 году Ассоциация инженеров электротехники и электроники IEEE (I triple E, «Ай трипл и») провела опрос на тему популярности языков программирования, и по его результатам Python занял лидирующие позиции.

Возможности Python-разработчика

  • Создание веб-приложений — имеет фреймворки для создания сайтов и веб-приложений, например, Django, Flask.
  • Автоматизация вычислительных комплексов — специальные серверные программы (Fabric, Ansible), которые разносят обновления по серверам, собирают информацию, позволяют автоматически инсталлировать систему и прочие процессы, которые требуют автоматизации.
  • Ведение научных исследований — обработка структурированных и неструктурированных данных огромных объемов, добыча и анализ данных в научной сфере (библиотеки NumPy, Pandas).
  • Создание полноценных десктопных приложений — создание переносимых десктоп-приложений (wxPython, pyQt).
  • Встраивание приложений в мобильные системы — написание программ и игр под мобильные устройства (kivi), а также для различных устройств (stackless python): терминалов, кассовых аппаратов, роутеров, систем видеонаблюдения.
  • Написание скриптов поведения в играх — например, в World of Tanks, EVE Online.

Кто программирует на Python

Множество известных компаний использует язык Python

Компания Google создает свои версии языка и фреймворков. Серверная часть Instagram написана на Python с использованием фреймворка Django. «Яндекс» использует Python для различных внутренних решений, например, в «Яндекс.Картах». В NASA пишут программы для анализа проходящих полетов, различные скрипты для автоматизации вычислительных процессов. Облачное хранилище Dropbox полностью написано на Python, и, кстати, разработчик и создатель языка Гвидо Ван Россум сейчас работает именно там.

Создатель языка Python Гвидо Ван Россум. Источник: «Википедия»

Как начать работу с Python

Начать писать программы на Python очень просто, для этого нужно:

  1. Установить дистрибутив последней версии www.python.org/downloads/.
  2. Установить подходящий текстовый редактор www.sublimetext.com/3.

После установки дистрибутива запускаем консоль Python через появившийся ярлык в меню «Пуск» и тестируем работоспособность: например, вводим выражение «2 + 2». Если видим результат 4, значит, все работает.

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

Для начала в главном меню редактора во вкладке Tools → Build System → Python укажем, что собираемся использовать синтаксис Python. Далее пропишем простую команду print(‘Hello world’), сохраним файл с расширением .py и запустим на выполнение комбинацией клавиш Ctrl + B. Если в консоли редактора вы увидите надпись «Hello world», значит, все настроено правильно и можно приступать к работе.

Пишем скрипт для рисования

В данном примере мы напишем скрипт, который будет рисовать дерево. Для работы с графикой в открытом доступе существует специальная Python-библиотека simple_draw. Чтобы установить ее, необходимо открыть командную строку (cmd) и прописать в ней команду pip install simple_draw.

Для начала давайте представим, из чего состоит структура дерева. Это ствол и ветки. В нашей программе дерево будет строиться из векторов — направленных отрезков. Попробуем нарисовать вектор. Перейдем в редактор, создадим новый файл draw.py и пропишем следующий код:

import simple_draw

simple_draw.resolution = (1200, 600)

point = simple_draw.get_point(600, 5)

angle, length, width = 90, 100,3 

vector_1 = simple_draw.Vector(point, angle, length, width)

vector_1.draw()

simple_draw.pause()

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

Далее создаем переменную point (точка) и с помощью метода (функции) get_point задаем начальную точку, из который будет выходить вектор, —600 пикселей от левого края экрана и 5 пикселей от низа экрана.

Чтобы создать объект Vector, нужно задать ему такие параметры, как точка начала вектора — point, угол отклонения — angle (90 градусов), длина — length (100 пикселей) и толщина линии — width (3 пикселя). Как видно из кода, все эти переменные можно записать в одну строчку.

Переменная vector_1 будет содержать в себе объект — вектор, а чтобы отрисовать его в окне, применим к нему метод draw (рисовать). Сохраним и запустим скрипт.

Представим, что мы отрисовали ствол дерева. Теперь попробуем создать еще несколько векторов, чтобы нарисовать ветви. У дерева может быть огромное количество веток, поэтому придется создавать и большое количество векторов. Такой код будет слишком громоздким и длинным. Чтобы этого избежать, автоматизируем процесс рисования векторов и создадим функцию branch, принимающую на вход параметры point, angle, length и width, которая и будет рисовать ветви.

def branch(point, angle, length, width):

vector = simple_draw.Vector(point, angle, length, width)

vector.draw()

return vector.end_point, angle - 30, length * 0.8, width

Данная функция создает вектор с теми параметрами, которые ей передаются в скобках, отрисовывает его, а затем возвращает конечную точку отрисованного вектора (vector.end_point), угол отклонения, который на30 градусов меньше предыдущего (angle –30), длину вектора, немного меньшую исходной (length*0.8) и ширину (width). Попробуем с ее помощью создать несколько новых ветвей.

import simple_draw

simple_draw.resolution = (1200, 600)

def branch(point, angle, length, width):

vector = simple_draw.Vector(point, angle, length, width)

vector.draw()

return vector.end_point, angle - 30, length * 0.8, width

point = simple_draw.get_point(600, 5)

angle, length, width = 90, 100,3 

point_2, angle_2, length_2, width_2 = branch(point, angle, length, width)

point_3, angle_3, length_3, width_3 = branch(point_2, angle_2, length_2, width_2)

point_4, angle_4, length_4, width_4 = branch(point_3, angle_3, length_3, width_3)

point_5, angle_5, length_5, width_5 = branch(point_4, angle_4, length_4, width_4)

simple_draw.pause()

Мы нарисовали4 вектора. Каждый последующий вектор исходит от конца предыдущего и отличается длиной и углом отклонения, тем самым формируя изгиб ветви дерева. Но если мы снова представим реальное дерево, то чтобы отрисовать его, потребуется еще множество векторов. Задача программиста — написать как можно более компактный, универсальный и красивый код.

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

import simple_draw

simple_draw.resolution = (1200, 600)

def branch(point, angle, length, width):

if length < 10:

return

vector = simple_draw.Vector(point, angle, length, width)

vector.draw()

branch(vector.end_point, angle - 30, length * 0.8, width)

point = simple_draw.get_point(600, 5)

angle, length, width = 90, 100,3 

branch(point, angle, length, width)

simple_draw.pause()

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

Теперь сделаем так, чтобы с конца каждой ветви дерева исходили вправо и влево другие ветви, меньшего размера. Для этого в тело функции нужно добавить еще один вызов самой себя, в котором параметр angle будет увеличиваться на30 градусов. Таким образом ветви будут отрисовываться и вправо (angle –30), и влево (angle +30).

Добавим немного красоты нашему дереву и сделаем так, чтобы цвет каждой ветви генерировался случайным образом. Для этого внутри функции vector.draw() в скобках укажем параметр simple_draw.random_color() — это функция, которая возвращает случайный цвет.

Таким образом, конечный код выглядит следующим образом:

import simple_draw

simple_draw.resolution = (1200, 600)

def branch(point, angle, length, width):

if length < 10:

return

vector = simple_draw.Vector(point, angle, length, width)

vector.draw(simple_draw.random_color())

branch(vector.end_point, angle - 30, length * 0.8, width)

branch(vector.end_point, angle + 30, length * 0.8, width)

point = simple_draw.get_point(600, 5)

angle, length, width = 90, 100,3 

branch(point, angle, length, width)

simple_draw.pause()

Запустим на выполнение и получим красивое, разноцветное дерево.

Как видите, небольшая функция за нас сделала всю работу. Изменив ее параметры и немного «поиграв» с кодом, можно добиться различных форм и видов деревьев.

Заключение

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

В ряды Python-разработчиков постоянно вступают новые программисты, расширяя и без того немалую базу знаний и открытого исходного кода. Надеемся, что после прочтения статьи вы тоже всерьез задумаетесь об изучении языка Python и выберите его в качестве основного. А заняться им вы сможете на курсе «Python-разработчик с нуля (2018)» от компании Skillbox.

Курс «Python-разработчик с нуля»

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

  •  32 часа теории и 16 практических заданий
  • Живая обратная связь с преподавателями
  • Неограниченный доступ к материалам курса
  • Стажировка в компаниях-партнёрах
  • Дипломный проект от реального заказчика
  • Гарантия трудоустройства в компании-партнёры для выпускников, защитивших дипломные работы
Хочешь получать крутые статьи по программированию?
Подпишись на рассылку Skillbox