Теги: python, пайтон, первая программа, написание программы
В этой статье мы рассмотрим, какие действия нужно предпринять, чтобы написать свою первую программу на языке Python. Материал предназначен для начинающих, которые делают первые шаги в мире программирования.
Итак, прежде чем мы приступим к написанию программы, давайте установим Python, если вы этого ещё не сделали. Для этого мы предварительно скачаем Python с официального сайта. Если у вас Windows, инсталлятор берём отсюда, выбирая нужную версию. В принципе, установка проблем не вызывает, поэтому мы не будем задерживаться на этом шаге. К тому же, в сети полно статей, где подробно и пошагово описывается инсталляция Python (кстати, его можно установить и на Unix-подобные системы: Linux, Ubuntu и прочие).
Пишем первую программу
Что нужно сделать в первую очередь? Во-первых, открыть IDLE — она представляет собой среду разработки на Python и поставляется вместе с дистрибутивом:
После запуска IDLE в интерактивном режиме мы можем переходить к созданию первой программы. Как уже стало доброй традицией, это будет классический «Hello world».
Чтобы написать такую простейшую программу мы используем всего одну строку кода:
После ввода этого кода в среду разработки и нажатия кнопки «Enter» мы получим соответствующий вывод:
Элементарно, Ватсон! Теперь вы написали первую программу на Python! Впрочем, это не сделает вас программистом, ведь всё гораздо сложнее… С другой стороны, надо же с чего-то начинать.
Для закрепления можете написать другие простые программы. Например, нижеследующий код выведет в консоли 8:
Впрочем, при разработке программ на Python интерактивный режим не является основным. Чаще всего мы сохраняем код программы в файл, а потом запускаем файл. Давайте создадим в IDLE новое окно, выбрав File → New File (также можно нажать Ctrl + N):
У нас появится окно, где вводим следующий код:
name = input("Как твоё имя? ") print("Здравствуй,", name)Что тут происходит:
1) первая строка программы выводит в консоль вопрос, спрашивает ваше имя и ждёт ответа;
2) после того, как вы напишете имя и нажмёте «ввод», Python-программа сохранит полученное значение в переменной name;
3) вторая строка выведет на экран написанное вами имя после слова «Здравствуй». Например, «Здравствуй, Петя!».Для запуска нашей новой программы на Python достаточно нажать F5 либо выбрать в меню IDLE Run → Run Module. Кстати, перед запуском среда разработки предложит сохранить файл (папку можете выбрать сами).
Что ж, на этом всё. Поздравляем вас с написанием первой, второй и даже третьей программы на Python. Впереди ещё много интересного, главное — не бросать начатое. Помните старую истину: «Дорогу осилит идущий».
В этом уроке мы создадим на основе языка программирования Python свое первое программное обеспечение с .exe файлом.
Содержание
- Введение в GUI
- Создаем собственный калькулятор
- Создание GUI
- Создание функции
- Процесс вычислений
- Обработка исключений
- Создание EXE
- Шаг 1
- Шаг 2
Введение в GUI
GUI (Graphical user interface) — графический интерфейс пользователя. С этого понятия мы и начнем. На самом деле никаких скрытых смыслов здесь нет и GUI — это графическое представление для всех ваших программ.
То есть вы могли бы запустить программу из командной строки и получить результат в том же самом виде. Но чтобы ваш код взаимодействовал с пользователем, необходим интерфейс для взаимодействия.
В «питоне» есть много модулей, которые вы можете импортировать и на его основе создавать свой графический интерфейс. Мы будем использовать Tkinter — встроенный GUI для Python. Он устанавливается вместе «питоном».
Кроме того, вы также можете попробовать PyQT, Kivy (лучше всего подходит для кроссплатформенности, при создании ПО под apk, exe или MAC). Официальный сайт — kivy.org.
В этом уроке я собираюсь использовать Tkinter. Удобная вещь в Python состоит в том, что вы можете импортировать другие файлы в свой файл. Точно также нужно импортировать Tkinter, аналогично #include в C.
from Tkinter import * import Tkinter import tkMessageBox top = Tk() L1 = Label(top, text="HI") L1.pack( side = LEFT) E1 = Entry(top, bd =5) E1.pack(side = RIGHT) B=Button(top, text ="Hello",) B.pack() top.mainloop()
Здесь Tk() относится к классу в модуле Tkinter, который мы сохраняем, инициализируя в top. Label — это метод для печати текста, Entry — для создания пустой записи, Button — для создания кнопки.
pack — это ключ для упаковки всего в макет. mainloop сохраняет все видимым, пока вы не закроете графический интерфейс.
Создаем собственный калькулятор
Выше мы увидели простой графический интерфейс с кнопкой и полями. Приступим к созданию простого калькулятора Python.
Сразу скажу, что стиль кода, названия переменных очень важны и существует n-способов создания кода, но здесь мы только хотим понять суть создания ПО, а не выучить все правила правильного написания кода.
Создание GUI
Прежде чем перейти к коду, мы создадим графический интерфейс для нашего приложения-калькулятора. Для более легкого понимания мы будем использовать только одну кнопку и 4 строчки для ввода.
Воспользуемся написанным кодом выше и возьмем оттуда label, entry и button.
from Tkinter import * import Tkinter import tkMessageBox top = Tkinter.Tk() L1 = Label(top, text="My calculator",).grid(row=0,column=1) L2 = Label(top, text="Number 1",).grid(row=1,column=0) L3 = Label(top, text="Number 2",).grid(row=2,column=0) L4 = Label(top, text="Operator",).grid(row=3,column=0) L4 = Label(top, text="Answer",).grid(row=4,column=0) E1 = Entry(top, bd =5) E1.grid(row=1,column=1) E2 = Entry(top, bd =5) E2.grid(row=2,column=1) E3 = Entry(top, bd =5) E3.grid(row=3,column=1) E4 = Entry(top, bd =5) E4.grid(row=4,column=1) B=Button(top, text ="Submit",).grid(row=5,column=1,) top.mainloop()
Создание функции
В нашем случае сразу после ввода 2 чисел и указания операции между ними должен быть показан ответ.
Начнем с кнопки Submit (см. изображение калькулятора выше).
Нам нужно дать команду кнопке, создать функцию, которая предназначена для этого.
B=Button(top, text ="Submit", command =processing).grid(row=5,column=1) def process(): number1=Entry.get(E1) number2=Entry.get(E2) operator=Entry.get(E3)
Называем функцию process, которая после нажатия кнопки, простыми словами, обращается за данными к нашим строкам ввода и получает значения, введенные пользователем. Полученные данные мы сохраняем в number1, number2, operator.
Процесс вычислений
На этом этапе нам нужно обработать ввод, полученный от пользователя. По умолчанию полученное значение является строкой.
Для того, чтобы преобразовать тип данных мы строковую переменную оборачиваем в int.
number1 = int(number1) number2 = int(number2)
Тем не менее, есть еще одна проблема — получение значения оператора (например, + — * /) для работы.
На самом деле решение довольно простое — использовать условный оператор if и делать вычисления внутри условий.
number1=int(number1) number2=int(number2) if operator == "+&quфot;: answer = number1 + number2 if operator == "-": answer = number1 - number2 if operator == "*": answer= number1 * number2 if operator == "/": answer = number1 / number2
Строка в Python обозначается как » « или ‘ ‘, то есть здесь в if мы проверяем строковый оператор, полученный от пользователя и сохраняем результат в переменной answer.
Теперь, наконец, нам нужно отправить вывод:
Entry.insert(E4,0,answer)
Код целиком будет выглядеть так:
from Tkinter import * import Tkinter import tkMessageBox def process(): number1=Entry.get(E1) number2=Entry.get(E2) operator=Entry.get(E3) number1=int(number1) number2=int(number2) if operator =="+": answer=number1+number2 if operator =="-": answer=number1-number2 if operator=="*": answer=number1*number2 if operator=="/": answer=number1/number2 Entry.insert(E4,0,answer) print(answer) top = Tkinter.Tk() L1 = Label(top, text="My calculator",).grid(row=0,column=1) L2 = Label(top, text="Number 1",).grid(row=1,column=0) L3 = Label(top, text="Number 2",).grid(row=2,column=0) L4 = Label(top, text="Operator",).grid(row=3,column=0) L4 = Label(top, text="Answer",).grid(row=4,column=0) E1 = Entry(top, bd =5) E1.grid(row=1,column=1) E2 = Entry(top, bd =5) E2.grid(row=2,column=1) E3 = Entry(top, bd =5) E3.grid(row=3,column=1) E4 = Entry(top, bd =5) E4.grid(row=4,column=1) B=Button(top, text ="Submit",command = process).grid(row=5,column=1,) top.mainloop()
Вы успешно написали код нашего калькулятора.
Обработка исключений
Заголовок звучит слишком техническим? Определенно нет, не переживайте. Мы всегда должны учитывать много разных моментов.
Предположим, вы сделали этот калькулятор и показали его другу. Друг вместо того, чтобы вводить целое число вводит буквы, которые должны быть там где цифры. Python выдает ошибку и сразу останавливается.
Здесь идет процесс обработки исключений Python, также во многих программах и на веб-страницах выдается предупреждение или предупреждающие сообщения.
Обработка исключений считается простым процессом. Давайте посмотрим, как это сделать в нашей программе:
def proces(): try: number1=Entry.get(E1) number2=Entry.get(E2) operator=Entry.get(E3) number1=int(number1) number2=int(number2) if operator =="+": answer=number1+number2 if operator =="-": answer=number1-number2 if operator=="*": answer=number1*number2 if operator=="/": answer=number1/number2 Entry.insert(E4,0,answer) print(answer) except ValueError: tkMessageBox.showwarning("Warning","Please enter the value in integer")
Здесь мы сделали простое диалоговое окно с предупреждением. tkMessageBox.showwarning — это настраиваемое предупреждение для Tkinter, где в скобках указываются заголовок диалогового окна и сообщение.
Создание EXE
Вы создали программу на Python, которая полностью работаете после отладки ошибок. Но есть одна проблема — что если вы хотите поделиться своим кодом Python с другими? У них должен быть установлен Python, но часто это просто невозможно. Кроме того вы можете не иметь делания раскрыть свой код и тогда лучше всего создать *.exe — файл.
Чтобы создать исполняемую *.exe версию или Apk (для Android) необходимо «заморозить» (freeze) ваш код.
Есть много способов «заморозить» ваш код, но я бы предложил использовать Pyinstaller.
Шаг 1
Перейдите на сайт pyinstaller.org и установите его. Можно это сделать через pip, а можно скачать Pyinstaller.
pip install pyinstaller
Шаг 2
Перейдите в папку, в которой находится код, нажмите SHIFT + правую клавишу мыши и далее «Открыть в командной строке». Т.е. либо «open in command prompt» или «power shell» в зависимости от вашей версии ОС.
python pyinstaller.py --noconsole yourscript.py pyinstaller.exe --onefile --windowed --name myapps --icon=yourico.ico yourscript.py
Добавляем свой значок для EXE-файла и помещаем всё в один файл с помощью второй команды.
Исходную программу на Python и *.exe файл вы можете скачать ниже:
На этом мы заканчиваем урок по разработке своего первого программного обеспечения на Python.
В этом разделе мы обсудим основной синтаксис и разберем пример Python – запустим простую программу для печати Hello World на консоли.
Python предоставляет нам два способа запуска программы:
- Использование подсказки интерактивного помощника.
- Использование файла сценария.
Давайте подробно обсудим каждый из них.
Интерактивная подсказка помощника
Python предоставляет нам возможность выполнять инструкции интерактивного помощника. Это предпочтительнее в том случае, когда нас беспокоит вывод каждой строки программы Python.
Чтобы использовать интерактивный режим, откройте терминал(или командную строку) и введите python(python3 в случае, если в вашей системе установлены Python2 и Python3).
Откроется следующее приглашение, в котором мы можем выполнить оператор Python и проверить влияние на консоль.
После написания отчета о печати нажмите клавишу Enter.
Здесь мы получаем сообщение “Hello World!” на консоли.
Использование файла сценария(Программирование в режиме сценария)
Подсказка интерпретатора лучше всего подходит для выполнения однострочных операторов кода. Однако мы не можем писать код каждый раз на терминале. Не рекомендуется писать несколько строк кода.
Используя режим сценария, мы можем записать многострочный код в файл, который может быть выполнен позже. Для этого нам нужно открыть редактор, например блокнот, создать файл с именем и сохранить его с расширением .py, что означает «Python». Теперь мы реализуем приведенный выше пример, используя режим скрипта.
print("hello world"); #here, we have used print() function to print the message on the console.
Чтобы запустить этот файл с именем first.py, нам нужно запустить следующую команду на терминале.
Шаг – 1: Откройте интерактивную оболочку Python и нажмите «Файл», затем выберите «Создать», откроется новый пустой скрипт, в котором мы можем написать наш код.
Шаг 2: Теперь напишите код и нажмите «Ctrl + S», чтобы сохранить файл.
Шаг – 3: После сохранения кода мы можем запустить его, нажав «Выполнить» или «Выполнить модуль». Он отобразит вывод в оболочку.
Результат будет показан следующим образом.
Шаг – 4: Кроме того, мы также можем запустить файл с помощью терминала операционной системы. Но мы должны знать путь к каталогу, в котором мы сохранили наш файл.
- Откройте командную строку и перейдите в каталог.
- Нам нужно ввести ключевое слово python, затем имя файла и нажать Enter, чтобы запустить файл Python.
Многострочные операторы
Многострочные операторы записываются в блокнот как редактор и сохраняются с расширением .py. В следующем примере мы определим выполнение нескольких строк кода с помощью скрипта Python.
Код:
name = "Andrew Venis" branch = "Computer Science" age = "25" print("My name is: ", name, ) print("My age is: ", age)
Файл сценария:
Плюсы и минусы режима сценария
Режим сценария также имеет несколько преимуществ и недостатков. Давайте разберемся в следующих преимуществах запуска кода в режиме скрипта:
- Мы можем запускать несколько строк кода.
- Отладка выполняется легко в режиме сценария.
- Подходит как для новичков, так и для экспертов.
Посмотрим на недостатки скриптового режима:
- Нужно сохранять код каждый раз, если мы вносим в него какие-либо изменения.
- Когда мы запускаем одну или несколько строк кода, это может быть утомительно.
Начало работы с PyCharm
В нашей первой программе мы использовали gedit в CentOS в качестве редактора. В Windows у нас есть альтернатива, например блокнот или блокнот ++, для редактирования кода. Однако эти редакторы не используются в качестве IDE для Python, поскольку они не могут отображать предложения, связанные с синтаксисом.
JetBrains предоставляет самую популярную и широко используемую кроссплатформенную IDE PyCharm для запуска программ Python.
Установка PyCharm
Как мы уже говорили, PyCharm – это кроссплатформенная IDE, поэтому ее можно установить в различных операционных системах. В этом разделе руководства мы рассмотрим процесс установки PyCharm в Windows, MacOS, CentOS и Ubuntu.
Windows
Установить PyCharm в Windows очень просто. Чтобы установить PyCharm в операционной системе Windows, перейдите по ссылке https://www.jetbrains.com/pycharm/download/download-thanks.html?platform=windows, чтобы загрузить установщика. Дважды щелкните файл установки(.exe) и установите PyCharm, нажимая «Далее» на каждом шаге.
Чтобы создать первую программу для Pycharm, выполните следующий шаг.
Шаг – 1. Откройте редактор Pycharm. Нажмите на «Создать новый проект», чтобы создать новый проект.
Шаг – 2. Выберите место для сохранения проекта.
- Мы можем сохранить созданный проект в выбранном по желанию месте памяти или оставить расположение файла как есть, но, по крайней мере, изменить имя проекта по умолчанию без названия на «FirstProject» или что-то значимое.
- Pycharm автоматически найдет установленный интерпретатор Python.
- После изменения имени нажмите кнопку «Создать».
Шаг – 3. Щелкните меню «Файл» и выберите «Новый». При нажатии на опцию «Новый» он покажет различные форматы файлов. Выберите «Файл Python».
Шаг – 4. Теперь введите имя файла Python и нажмите «ОК». Мы написали «Первую программу».
Шаг – 5. Теперь введите первую программу – print(«Hello World»), затем нажмите меню «Выполнить», чтобы запустить программу.
Шаг – 6. Результат появится внизу экрана.
Отступы в Python
Отступы – наиболее важная концепция языка программирования Python. Неправильное использование отступов приведет к ошибке “IndentationError” в нашем коде.
Отступы – это не что иное, как добавление пробелов перед оператором, когда это необходимо. Без отступа Python не знает, какой оператор выполнять следующим. Отступ также определяет, какие операторы принадлежат какому блоку. Если нет отступа или отступ неправильный, отобразится «IndentationError» и прервет наш код.
Отступы Python определяют, какая группа операторов принадлежит конкретному блоку. В языках программирования, таких как C, C ++, java, для определения блоков кода используются фигурные скобки {}.
В Python операторы, находящиеся на одном уровне справа, принадлежат одному блоку. Мы можем использовать четыре пробела для определения отступа. Давайте посмотрим на следующие строки кода.
Пример –
list1 = [1, 2, 3, 4, 5] for i in list1: print(i) if i==4: break print("End of for loop")
Выход:
1 2 3 4 End of for loop
Объяснение:
В приведенном выше коде цикл for имеет блоки кода, если оператор имеет блок кода внутри цикла for. Оба с четырьмя пробелами с отступом. Последний оператор print() без отступа; это означает, что он не принадлежит циклу for.
Комментарии в Python
Комментарии необходимы для определения кода и помогают нам и другим людям понять код. Просматривая комментарий, мы можем легко понять назначение каждой строки, написанной нами в коде. Мы также можем очень легко найти ошибки, исправить их и использовать в других приложениях.
В Python мы можем применять комментарии, используя символ решетки #. Интерпретатор Python полностью игнорирует строки, за которыми следует символ решетки. Хороший программист всегда использует комментарии, чтобы сделать код стабильным. Давайте посмотрим на следующий пример комментария.
name = "Thomas" # Assigning string value to the name variable
Мы можем добавить комментарий в каждую строку кода Python.
Fees = 10000 # defining course fees is 10000 Fees = 20000 # defining course fees is 20000
Хорошая идея – добавить код в любую строку раздела кода, цель которого неочевидна. Это лучший способ изучить при написании кода.
Типы комментариев
Python предоставляет возможность писать комментарии двумя способами – однострочный комментарий и многострочный комментарий.
Однострочный комментарий начинается с символа решетки #, за которым следует текст для дальнейшего объяснения.
# defining the marks of a student Marks = 90
Мы также можем написать комментарий рядом с оператором кода. Рассмотрим следующий пример.
Name = "James" # the name of a student is James Marks = 90 # defining student's marks Branch = "Computer Science" # defining student branch
Многострочные комментарии – Python не имеет явной поддержки многострочных комментариев, но мы можем использовать символ решетки # для нескольких строк. Например –
# we are defining for loop # To iterate the given list. # run this code.
Мы также можем использовать другой способ.
" " " This is an example Of multi-line comment Using triple-quotes " " "
Это основное введение в комментарии. Просмотрите наш урок по комментариям Python, чтобы изучить его подробно.
Идентификаторы Python
Идентификаторы Python относятся к имени, используемому для идентификации переменной, функции, модуля, класса, модуля или других объектов. Есть несколько правил, которым нужно следовать при присвоении имени переменной Python.
- Имя переменной должно начинаться с английской буквы или символа подчеркивания(_).
- Имя переменной не может начинаться с числа.
- В имени переменной нельзя использовать специальные символы.
- Имя переменной чувствительно к регистру.
Пример –
number = 10 print(num) _a = 100 print(_a) x_y = 1000 print(x_y)
Выход:
10 100 1000
Мы определили базовый синтаксис языка программирования Python. Мы должны ознакомиться с основной концепцией любого языка программирования. Как только мы запомним концепции, упомянутые выше, изучение Python станет проще.
Изучаю Python вместе с вами, читаю, собираю и записываю информацию опытных программистов.
#Руководства
- 11 июн 2018
-
16
Если вы не знаете, с какого языка начать изучать программирование, — почитайте, что думает об освоении Python программист Skillbox Вадим Шандринов.
Ведущий программист Skillbox, опыт программирования на Python — более 16 лет. Ведет обучающий курс по этому языку.
ВРЕМЯ ПРОСМОТРА
2 часа 2 мин.
- Легко читаемый код — синтаксис языка построен таким образом, что он не позволяет писать «некрасивый» и неструктурированный код. Программа на Python выглядит как английский текст.
- Переносимость языка — Python является интерпретируемым языком и работает под виртуальной машиной, а это означает, что его можно запускать на разных платформах: MacOS, Linux, Windows, Android, iOS и прочих.
- Ускоренный цикл разработки — языку Python, в отличие от компилируемых языков программирования, таких как С, С++, С#, не нужно время на сборку и компиляцию программы, поэтому программа на Python быстро запускается и сразу показывает результат.
- Множество пакетов — язык имеет большое количество готовых решений и пакетов.
- Поддержка всех стилей программирования — императивный (приказной), объектный, функциональный.
- Низкий порог входа — за несколько дней можно начать писать свои первые программы.
В 2017 году Ассоциация инженеров электротехники и электроники IEEE (I triple E, «Ай трипл и») провела опрос на тему популярности языков программирования, и по его результатам Python занял лидирующие позиции.
- Создание веб-приложений — имеет фреймворки для создания сайтов и веб-приложений, например, Django, Flask.
- Автоматизация вычислительных комплексов — специальные серверные программы (Fabric, Ansible), которые разносят обновления по серверам, собирают информацию, позволяют автоматически инсталлировать систему и прочие процессы, которые требуют автоматизации.
- Ведение научных исследований — обработка структурированных и неструктурированных данных огромных объемов, добыча и анализ данных в научной сфере (библиотеки NumPy, Pandas).
- Создание полноценных десктопных приложений — создание переносимых десктоп-приложений (wxPython, pyQt).
- Встраивание приложений в мобильные системы — написание программ и игр под мобильные устройства (kivi), а также для различных устройств (stackless python): терминалов, кассовых аппаратов, роутеров, систем видеонаблюдения.
- Написание скриптов поведения в играх — например, в World of Tanks, EVE Online.
Компания Google создает свои версии языка и фреймворков. Серверная часть Instagram* написана на Python с использованием фреймворка Django. «Яндекс» использует Python для различных внутренних решений, например, в «Яндекс.Картах». В NASA пишут программы для анализа проходящих полетов, различные скрипты для автоматизации вычислительных процессов. Облачное хранилище Dropbox полностью написано на Python, и, кстати, разработчик и создатель языка Гвидо Ван Россум сейчас работает именно там.
Источник: «Википедия»
Начать писать программы на Python очень просто, для этого нужно:
- Установить дистрибутив последней версии www.python.org/downloads/.
- Установить подходящий текстовый редактор 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 — очень перспективный и востребованный язык. Рассмотрев наглядный пример, мы видим, что его синтаксис и правда прост, а код — легко читаем. О возможностях и преимуществах перед другими языками мы тоже успели поговорить.
* Решением суда запрещена «деятельность компании Meta Platforms Inc. по реализации продуктов — социальных сетей Facebook и Instagram на территории Российской Федерации по основаниям осуществления экстремистской деятельности.
Учись бесплатно:
вебинары по программированию, маркетингу и дизайну.
Участвовать
Научитесь: Python
Узнать больше
В прошлой статье я рассказал как установить Python и среду разработки PyCharm. В этой статье поговорим о том, как написать программу на Python.
Что для этого нужно?
Для того, чтобы написать программу на любом языке программирования нужно знать, что мы хотим сделать.
Давайте для начала напишем самую простую программу, которая просто выводит сообщение в консоль. По традиции, этим сообщением является «Hello world!».
Функция print
Функция print() выводит сообщение в консоль. В скобках в качестве параметра передается сообщение и/или переменные.
Алгоритм
1. Создаем файл с расширением .py
2. Пишем в нем строку
print(«Hello World!»)
Если мы запустим этот файл двойным нажатием левой кнопкой мыши, то он быстро закроется, и мы не успеем разглядеть наше сообщение.
Для того, чтобы этого не происходило добавим функцию input()
Функция input
Функция input() предназначена для считывания данных с клавиатуры. В скобках передается сообщение, которое будет выведено в консоль.
Добавим в конце нашей программы input(«Нажмите enter для продолжения…»), и тогда наша программа не закроется. Код будет выглядеть так:
print(«Hello World!»)
input(«Нажмите enter для продолжения…»)
Я не буду писать программу, а запущу Python из командной строки, чтобы показать вам, что всё работает.
Заключение
Подытожим.
1. Для того, чтобы написать программу на Python, нужно сформулировать, что мы хотим сделать (в нашем примере мы захотели вывести сообщение «hello world» в консоль)
2. Нужно знать синтаксис языка программирования Python (благо, он не такой сложный, в отличии от некоторых других языков программирования)
Чтобы изучать программирование на языке Python было проще, специально для вас я создал ютуб-канал «Русский питонист», на котором уже опубликовал плейлист по основам Python.
Русский Питонист
Программист на Python
Можете задавать ваши вопросы в моём телеграм-канале
Мой ютуб-канал:
Время на прочтение
7 мин
Количество просмотров 31K
Это адаптированный перевод статьи Modern Python part 1: start a project with pyenv & poetry Фаози Браза, специалиста по Data Engineer. Повествование ведётся от лица автора оригинала.
Перевод был сделан для платформы курсов по программированию Хекслет
Практически все начинающие разработчики сталкиваются с тем, что понимания синтаксиса у языка программирования и хороших инженерных практик недостаточно для того, чтобы начать программировать. Прежде, чем написать первую рабочую программу, нужно создать правильную среду разработки — такую, которая внедряет хорошие методы написания кода, повышает производительность и облегчает взаимодействие и коммуникацию проекте.
Процесс создания пакетов и инструментарий для Python часто называют громоздким и сложным. В связи с этим в последние годы появилось несколько проектов с открытым исходным кодом, цель которых — облегчить управление пакетами Python в рамках ваших рабочих проектов. Здесь мы рассмотрим, как использовать два из них: Pyenv — для управления и установки различных версий Python, и Poetry — для управления пакетами и виртуальными окружениями.
Эта статья — первая из цикла, в котором рассказывается о лучших практиках современного Python. В этом цикле статей все примеры основаны на реализации простого проекта — он представляет собой функцию Python, которая суммирует данные, присутствующие в pandas DataFrame. Функция выводит количество строк и столбцов и частоту каждого типа данных, присутствующих в pandas DataFrame.
Подготовка
Установка pyenv
Для установки pyenv
вам потребуются некоторые зависимости, специфичные для вашей операционной системы. Они необходимы, поскольку pyenv
устанавливает Python через сборку из исходного кода. Чтобы узнать о необходимых зависимостях для вашей ОС, прочитайте эту документацию. После установки зависимостей, вы можете установить pyenv
. Для этого лучше использовать pyenv-installer, который автоматизирует процесс.
curl https://pyenv.run | bash
После этого вы уже можете установить на свою систему любые версии Python. Узнать все доступные версии Python вы сможете через специальную команду:
pyenv install --list
В нашем случае мы установим классический CPython версий 3.7.10
, 3.8.7
, 3.9.2
:
pyenv install 3.7.10
Downloading Python-3.7.10.tar.xz...
> https://www.python.org/ftp/python/3.7.10/Python-3.7.10.tar.xz
Installing Python-3.7.10...
Installed Python-3.7.10 to /home/aabur/.pyenv/versions/3.7.10
После установки версий вы можете увидеть их, выполнив команду:
pyenv versions
system
3.7.10
3.8.7
3.9.2
Видно, что pyenv
идентифицировал недавно установленные версии Python, и версию, установленную по умолчанию в вашей системе. Символ перед system
означает, что глобальная версия, используемая сейчас, является системной. pyenv
позволяет управлять версиями Python на разных уровнях: глобально и локально. Допустим, мы собираемся установить версию 3.7.10
в качестве глобальной версии.
pyenv global 3.7.10
Давайте еще раз посмотрим наши версии:
pyenv versions
system
* 3.7.10 (set by /home//.pyenv/version)
3.8.7
3.9.2
Вы видите, что pyenv
установил 3.7.10
в качестве нашей глобальной версии Python. Это не изменит операции, которые требуют использования системной версии. Путь, который вы можете прочитать между скобками, соответствует пути, который указывает на требуемую версию Python. pyenv
перехватывает команды Python с помощью исполняемых файлов, введенных в ваш PATH
, определяет, какую версию Python вам нужно использовать, и передает команды нужной версии Python. Не стесняйтесь читать полную документацию, чтобы лучше понять функциональность и возможности pyenv
.
Пусть вас не смущает семантика. Изменение глобальной версии не повлияет на вашу системную версию. Системная версия соответствует версии, используемой вашей ОС для выполнения определенных задач или запуска фоновых процессов, которые зависят от этой конкретной версии Python. Не меняйте системную версию на другую, иначе вы можете столкнуться с рядом проблем с вашей операционной системой! Эта версия обычно обновляется вместе с вашей ОС. Глобальная версия — это просто версия, которую pyenv
будет использовать для глобального выполнения команд/программ Python.
Установка poetry
poetry
позволяет эффективно управлять зависимостями и пакетами в Python. Он выполняет ту же роль, что и setup.py
или pipenv, но обладает большей гибкостью и функциональностью. Вы можете указать библиотеки, от которых зависит ваш проект, в файле pyproject.toml
. После этого poetry
установит или обновит их по вашему запросу. Кроме того, этот инструмент позволяет изолировать ваш рабочий проект в изолированное окружение. Наконец, вы можете использовать poetry
для прямой публикации вашего пакета на Pypi.
Последним подготовительным шагом будет установка poetry
путем выполнения команды:
curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/master/get-poetry.py | python -
Создание проекта
Мы рассмотрим, как создать проект и изолировать его внутри окружения Python с помощью pyenv
и poetry
.
Установка версии Python с помощью pyenv
Сначала создадим каталог с именем my_awesome_project
и переместимся в него:
mkdir my_awesome_project && cd $_
Находясь внутри папки проекта, установите локальную версию Python, которую мы будем использовать (мы будем использовать Python 3.8.7). Это укажет poetry
использовать локальную версию Python, определенную pyenv
:
pyenv local 3.8.7
Это создаст файл .python-version
внутри нашего проекта. Этот файл будет прочитан pyenv
и заставит его установить определенную локальную версию Python. В результате каждый каталог или файл, созданный после этого, будет зависеть от локальной версии Python, а не от глобальной.
Создание проекта с помощью poetry
Poetry предоставляет надежный CLI, позволяющий создавать, настраивать и обновлять ваш Python-проект и его зависимости. Для создания проекта Python используйте следующую команду:
poetry new <project_name>
Эта команда генерирует проект по умолчанию. Содержание нового проекта следующее:
.
└── summarize_dataframe
├── README.rst
├── pyproject.toml
├── summarize_dataframe
│ └── init.py
└── tests
├── init.py
└── test_summarize_dataframe.py
Обратите внимание на файл pyproject.toml
. Здесь мы определяем все метаданные нашего проекта, зависимости, скрипты и многое другое.
[tool.poetry]
name = "summarize_dataframe"
version = "0.1.0"
description = ""
authors = [" "]
[tool.poetry.dependencies]
python = "^3.8"
[tool.poetry.dev-dependencies]
pytest = "^5.2"
[build-system]
requires = ["poetry-core>=1.0.0"]
build-backend = "poetry.core.masonry.api"
Мы видим несколько разделов в нашем стандартном файле pyproject.toml
.
-
[tool.poetry]
: Этот раздел содержит метаданные о нашем пакете. Вы можете поместить сюда название пакета, краткое описание, данные об авторе, версию вашего проекта и так далее. Все детали здесь необязательны, но будут необходимы, если вы решите опубликовать пакет на Pypi. -
[tool.poetry.dependencies]
: Этот раздел содержит все необходимые зависимости для нашего пакета. Вы можете указать конкретные номера версий этих пакетов (packageX = "1.0.0"
) или использовать условные обозначения. Здесь также задается версия Python, которую мы хотим использовать в проекте. В нашем случаеpython = "^3.8"
определяет минимальную версию, необходимую для работы нашего приложения. Здесь — Python 3.8, это основано нашей локальной версии, определенной с помощьюpyenv
. -
[tool.poetry.dev-dependencies]
: Этот раздел содержит все зависимости необходимые для разработки проекта. Тем не менее, эти зависимости не требуются для запуска приложения и не будут загружены при сборке пакета. -
[build-system]
: Не трогайте этот раздел, если вы не обновили версиюpoetry
.
Вы можете посмотреть полный список доступных разделов для файла pyproject.toml
здесь.
Установка и активация виртуального окружения
Здесь есть два подхода: либо вы заранее знаете все необходимые вам зависимости и можете напрямую изменить файл pyproject.toml
соответствующим образом, либо вы решаете добавить их позже, по мере необходимости. В нашем примере мы собираемся постепенно добавлять зависимости в процессе написания кода. Следовательно, нужно только инициализировать проект и создать виртуальное окружение. Для надо выполнить команду в директории вашего проекта:
poetry install
Creating virtualenv summarize-dataframe in /Users/aabur/Documents/GitHub/AABur/modern_python/summarize_dataframe/.venv
Updating dependencies
Resolving dependencies... (7.3s)
Writing lock file
Package operations: 8 installs, 0 updates, 0 removals
• Installing pyparsing (2.4.7)
• Installing attrs (21.2.0)
• Installing more-itertools (8.11.0)
• Installing packaging (21.2)
• Installing pluggy (0.13.1)
• Installing py (1.11.0)
• Installing wcwidth (0.2.5)
• Installing pytest (5.4.3)
Installing the current project: summarize_dataframe (0.1.0)
Сначала создаётся виртуальное окружение. В нашем случае в папке проекта в директории .venv
.
Вы можете создать виртуальное окружение в любых других каталогах. Для этого вам нужно отредактировать конфигурацию poetry
. Для получения более подробной информации следуйте этой документации.
Затем, poetry
прочитает файл pyproject.toml
и установит все зависимости, указанные в этом файле. Если версии зависимостей не определены, poetry
загрузит последнюю версию пакетов. В конце операции создается файл poetry.lock
. Он содержит все пакеты и их точные версии. Помните, что если файл poetry.lock
уже существует, то номера версий, определенные в нем, имеют приоритет над теми, что определены в файле pyproject.toml
. Наконец, вы должны сохранить файл poetry.lock
в репозитории проекта, чтобы все участники, работающие над проектом, использовали одинаковые версии зависимостей.
Теперь давайте активируем среду, которую мы только что создали, с помощью следующей команды:
poetry shell
Spawning shell within /Users/aabur/Documents/GitHub/AABur/modern_python/summarize_dataframe/.venv
Команда создает дочерний процесс, который наследует от родительского Shell, но не изменяет свое окружение. Она изолирует и защищает любые изменения, которые вы будете вносить в среду проекта.
Создание репозитория git
На последнем этапе мы создадим git-репозиторий, добавим файлы README.md
и .gitignore
и перенесем все в наш удаленный репозиторий.
git init
echo ".*n!.gitignore" > .gitignore
echo "# Summarize dataframe" > README.md
git add .
git commit -m "build: first commit. Environment built"
git remote add origin git@github.com:AABur/summarize_dataframe.git
git branch -M main
git push -u origin main
Заключение
Здесь мы рассмотрели, как устанавливать и управлять различными версиями Python на нашей машине с помощью pyenv
. Мы продемонстрировали, как использовать pyenv local
для установки определенной версии Python в вашем проекте, а затем создать виртуальное окружение с помощью poetry
. Использование poetry
значительно упрощает процесс создания проекта, предлагая простые и разнообразные средства для его настройки. Кроме того, он включает минимальные требования к системе сборки, как определено в PEP 518.
Краткая памятка
pyenv
-
Посмотреть все доступные для установки версии Python
pyenv install --list
-
Установить глобальную версию Python
pyenv global
-
Установить локальную версию Python
pyenv local
poetry
-
Создать проект
poetry new
-
Установить основные зависимости и создать виртуальное окружение
poetry install
-
Активировать виртуальное окружение
poetry shell