Сам_себе_программист._Как_научиться_программировать_и_устроиться. Guide to Programming Professionally
Скачать 3.94 Mb.
|
Глава 2. Начало работы Хороший программист — это тот, кто смотрит в обе стороны, переходя дорогу с односторонним движением. Даг Линдер Что такое программирование Программирование — это создание инструкций, которые выполняет компьютер. Инструкции могут указывать компьютеру вывести строку , !, найти данные в Интернете или считать содержимое файла и сохранить его в базе дан- ных. Эти инструкции называются кодом. Программисты пишут код на разных языках программирования. Раньше программирование было намного сложнее, поскольку программисты были вынуждены использовать крайне сложные низко- уровневые языки программирования, такие как язык ассемблера. Когда язык программирования является низкоуровневым, это значит, что он ближе к двоич- ной записи (в нулях и единицах), чем высокоуровневый язык программирова- ния (язык, который больше напоминает английский), и поэтому его сложнее по- нять. Ниже приведен пример простой программы, написанной на ассемблере: bash_ex00.sh global _start section .text 16 Часть I _start: mov rax, 1 mov rdi, 1 mov rsi, message mov rdx, 13 syscall ; exit(0) mov eax, 60 xor rdi, rdi syscall message: db ", !", 10 Ниже показана та же программа, написанная на современном языке про- граммирования: Python_ex001.py 1 print(", !") Как видите, сегодня программистам приходится гораздо проще. Вам не нуж- но тратить время на изучение сложных языков низкоуровневого программиро- вания. Вместо этого вы научитесь использовать легко читаемый язык програм- мирования Python. Что такое Python Python — это язык программирования с открытым исходным кодом, созданный голландским программистом Гвидо ван Россумом и названный в честь британ- ской труппы комиков «Монти Пайтон» (Monty Python). Одним из ключевых со- ображений ван Россума было то, что программисты тратят больше времени на чтение кода, чем на его написание, поэтому он решил создать легко читаемый язык. Python является одним из самых популярных и простых в освоении язы- ков программирования в мире. Он работает на всех основных операционных системах и компьютерах и применяется везде, где только можно — от создания веб-серверов до настольных приложений. Благодаря популярности этого языка, на программистов Python сегодня существует большой спрос. Установка Python Чтобы следовать примерам в этой книге, вам необходимо установить Python 3. Вы можете загрузить Python для Windows и Unix по адресу python.org/downloads. Если у вас Ubuntu, Python 3 уже установлен по умолчанию. Убедитесь, что вы за- гружаете версию Python 3, а не Python 2. Некоторые примеры из этой книги не будут работать в версии Python 2. Python доступен как для 32-разрядных, так и для 64-разрядных компьютеров. Если компьютер был приобретен после 2007 года, то он, скорее всего, имеет 64-бит- ную разрядность. Если вы не уверены, поиск в Интернете поможет вам разобраться. 17 Введение в программирование Если у вас операционная система Windows или macOS, загрузите 64- или 32-раз- рядную версию Python, откройте файл и следуйте инструкциям. Вы также можете посетить сайт theselftaughtprogrammer.io/installpython и просмотреть видео, объясняющие, как установить Python в вашей операционной системе. Исправление проблем Начиная с этого момента, у вас должен быть установлен Python. При возникнове- нии проблем с установкой, перейдите к главе 11 в раздел «Получение помощи». Интерактивная оболочка Python поставляется с программой IDLE (сокращение от interactive development environment — интерактивная среда разработки). Кроме того, это фамилия Эрика Айдла (Eric Idle), одного из членов «Летающего цирка Монти Пайтона». IDLE — это то, где вы будете вводить свой код на Python. После загрузки Python, выполните поиск IDLE в Проводнике (Windows), Finder (macOS) или Nautilus (Ubuntu). Советую создать ярлык на Рабочем столе, чтобы упростить поиск. Щелкните мышью по ярлыку IDLE и откроется программа со следующими строками (впрочем, к моменту чтения книги все могло поменяться, так что не бес- покойтесь, если сообщение отсутствует или отличается): Python 3.6.3 (v3.6.3:2c5fed8, Oct 3 2017, 17:26:49) [MSC v.1900 32 bit (Intel)] on win32 Type "copyright", "credits" or "license()" for more information. >>> Эта программа называется интерактивной оболочкой . Вы можете вводить код Python непосредственно в интерактивную оболочку, и она выведет результа- ты. После приглашения >>> введите: 1 print(", !") Затем нажмите клавишу Enter. IDLE может отвергать код, копируемый из Kindle, других электронных книг или текстовых редакторов, таких как Microsoft Word. Если вы скопировали и вста- вили код, но получили сообщение об ошибке, попробуйте набрать код вручную непосредственно в оболочке. Необходимо вводить код точно так, как он написан в примере, включая кавычки, круглые скобки и любые другие знаки препинания. Интерактивная оболочка ответит выводом строки , ! 18 Часть I В мире программирования, когда вы обучаете кого-то новому языку, существует традиция в качестве самой первой программы научить его выводить строку , ! Так что поздравляю! Вы только что написали свою первую программу. Сохранение программ Интерактивная оболочка хорошо подходит для произведения быстрых вычис- лений, тестирования небольших фрагментов кода и написания коротких про- грамм, которые вы больше не планируете использовать. В IDLE вы также може- те сохранить программу для повторного использования. Запустите приложение IDLE, щелкните мышью по пункту File (Файл) в строке меню в левом верхнем углу редактора IDLE, а затем выберите команду New File (Новый файл). Так вы откроете текстовый редактор с пустым белым фоном. Вы можете писать свой код в этом текстовом редакторе и сохранять его, чтобы запустить позже. Когда вы запустите свой код, вывод появится в окне интерактивной оболочки. Нужно сохранить изменения при редактировании кода, прежде чем запускать его сно- ва. Введите код программы «Привет, мир!» в текстовый редактор. Снова щелкните мышью по пункту File (Файл) в строке меню и выберите коман- ду Save As (Сохранить как). Присвойте файлу имя hello_world.py и сохраните его. Имена файлов Python должны заканчиваться расширением .py. Как только вы сохра- нили свой файл, щелкните мышью по пункту Run (Запустить) в строке меню редак- тора IDLE и выберите команду Run Module (Запустить модуль). Или можете просто нажать клавишу F5, что эквивалентно выбору команды Run Module (Запустить мо- дуль). Строка , ! будет выведена в интерактивной оболочке, как если бы вы набрали эту строку кода в оболочке. Но теперь, поскольку вы сохранили свою программу, вы можете запускать ее столько раз, сколько хотите. Созданная вами программа — это просто файл с расширением .py, расположен- ный на вашем компьютере там, где вы его сохранили. Имя, которое я выбрал для файла, hello_world, совершенно произвольно, вы можете называть файлы как угод- но. Как и в этом примере, написание программ на Python заключается во вводе текста в файлах и запуске их с помощью интерактивной оболочки. Легко, правда? Запуск программ-примеров По ходу книги я буду приводить примеры кода и результатов, выводимых при его запуске. Всякий раз, когда я это делаю, вы должны ввести код и запустить его самостоятельно. Короткие примеры удобнее всего реализовывать с помощью оболочки, а тек- стовый редактор лучше подходит для более длинных программ, которые нужно 19 Введение в программирование сохранять и редактировать. Если вы допустили ошибку в своем коде в интерак- тивной оболочке, — например, опечатались — и он не работает, вам нужно вво- дить все заново. Использование текстового редактора позволяет сохранять вашу работу, поэтому, если вы допустили ошибку, просто исправляйте ее и запускайте программу повторно. Еще один важный момент — вывод в программе, выполняемой из файла и из оболочки, может отличаться. Если вы введете 100 в интерактивную оболочку и нажмете клавишу Enter, интерактивная оболочка выведет 100. Если вы введете 100 в файл с расширением .py и запустите его, вывода не будет вообще. Это раз- личие может вызвать путаницу, поэтому, если вдруг вы не получите тот же ре- зультат, что в примере, проверьте, откуда вы запускаете программу. Словарь терминов Python: простой в чтении язык программирования с открытым исходным ко- дом, который вы научитесь использовать в этой книге. Создан Гвидо ван Россу- мом и назван в честь британской комедийной труппы «Монти Пайтон». Высокоуровневый язык программирования: язык программирования, кото- рый больше похож на английский, чем язык программирования низкого уровня. Код: инструкции компьютеру, которые пишут программисты. Низкоуровневый язык программирования: язык программирования, запись которого ближе к двоичному формату (0 и 1), чем записи языка программирова- ния высокого уровня. Программирование: написание инструкций, которые выполняет компьютер. Язык ассемблера: тип трудного для чтения языка программирования. Практикум Попробуйте вывести что-то отличное от , !. Решение: chap2_challenge1.py. Глава 3. Введение в программирование Это единственная работа, где я могу быть одновременно инженером и художником. В ней есть что-то невероятное, технически строгое — что я очень люблю, поскольку оно требует крайне точного мышления. С другой стороны, здесь также присутствует простор для творчества, где единственным настоящим ограничением являются границы воображения. Энди Херцфельд Наша первая программа выводила строку , !. Давайте осуществим вывод сто раз. Введите следующий код в интерактивную оболочку (отступ перед командой print должен составлять ровно четыре пробела): Python_ex2.py 1 for i in range(100): 2 print(", !") 20 Часть I Ваша оболочка должна вывести строку , ! сто раз. Даже несмо- тря на то, что вам, вероятно, никогда не понадобится сто раз выводить , ! , этот пример наглядно демонстрирует, насколько мощно программирова- ние. Можете придумать еще что-то, что вы так же легко сделаете сотню раз? Я не могу. В этом и есть сила программирования. Примеры Отныне примеры с кодом будут выглядеть так: Python_ex2.py 1 for i in range(100): 2 print(", !") >> , ! >> , ! >> , ! Текст Python_ex2.py обозначает имя файла в папке с примерами для данной главы (3), в котором сохранен соответствующий код. Поэтому, если у вас возник- нут проблемы с выполнением кода, вы можете просто скопировать его из файла и вставить в текстовый редактор IDLE. Текст, следующий за символами >> — это вывод интерактивной оболочки. Далее в книге вы будете встречать символы >> после некоторых примеров – так будет указываться вывод программы в интерак- тивной оболочке. Многоточие (...) обозначает «и так далее». Если после примера отсутствуют символы >>, тогда либо программа не пред- усматривает вывода, либо я объясняю общую концепцию и вывод не важен. Весь текст, набранный шрифтом Courier New , относится к коду, выводу или программистскому жаргону. Например, если я упоминаю ключевое слово for из предыдущего примера, оно будет написано шрифтом Courier New. Courier New — это шрифт с фиксированной шириной (моноширинный шрифт), который часто используется для отображения программного кода. Каждый знак имеет одинаковую ширину, так что отступы и другие элементы вы- равнивания кода легче отслеживать. Вы можете запускать код в примерах или из оболочки, или из файлов с рас- ширением .py. Помните, что, как я упоминал ранее, что в вашем случае вывод в оболочке может быть несколько иным? Из-за этого результат работы программ может немного отличаться. Если в примере содержится вывод, но отсутствует слово print, нужно вводить код в оболочку. Если в примере есть слово print, нужно запускать код из файла .py. Комментарии Комментарий — это строка (или часть строки) кода, написанная на русском (или любом другом языке), которой предшествует специальный символ, указываю- щий языку программирования игнорировать эту строку (или часть строки) кода. В Python для создания комментариев используется символ #. 21 Введение в программирование Комментарий объясняет, что делает строка кода. Программисты используют комментарии, чтобы упростить понимание строки кода для тех, кто ее читает. Вы можете писать в комментарии все, что захотите, главное, в одну строку. Python_ex003.py 1 # 2 print(", !") >> , ! Пишите комментарий только в том случае, если в своем коде вы делаете что- то необычное или объясняете то, что не является очевидным исходя из самого кода. Используйте комментарии экономно — не комментируйте каждую строку кода — храните их для особых ситуаций. Ниже приведен пример необязательно- го комментария. Python_ex004.py 1 # , ! 2 print(", !") Этот комментарий необязателен, поскольку и так понятно, что делает стро- ка кода. Ниже приведен пример хорошего комментария. Python_ex005.py 1 import math 2 # 3 l = 4 4 w = 10 5 d = math.sqrt(l**2 + w**2) Даже если вы поняли, как работает этот код, вы все еще можете не знать, как рассчитать длину диагонали прямоугольника, так что комментарий уместен. Вывод В своих программах вы можете выводить все, что пожелаете, не только , ! , но не забывайте заключать текст в кавычки. Python_ex006.py 1 print("Python") >> Python Python_ex007.py 1 print(" !") >> ! 22 Часть I Строки кода Программы Python состоят из кода. Взгляните на следующую программу: Python_ex008.py 1 # 1 2 # 2 3 # 3 Перед вами три строки кода. Удобно ссылаться на каждый фрагмент кода по номеру строки, в которой он находится. В IDLE вы можете выбрать команду меню Edit @ Go to Line (Правка @ Перейти к строке), чтобы перейти к опреде- ленной строке в вашей программе. За один раз в оболочку можно вводить лишь одну строку кода, нельзя копировать и вставлять несколько строк. Иногда фрагмент кода слишком длинный и не вмещается в одну строку. Код, помещенный в тройные кавычки, круглые , квадратные и фигурные скобки, мо- жет быть продолжен на следующей строке. Python_ex009.py 1 print(""" 2 3 .""") Также, чтобы продолжить код на следующей строке, можно использовать символ обратного слеша (\). Python_ex010.py 1 print\ 2 (""" 3 .""") Оба эти примера выводят одно и то же. Обратный слеш позволил мне по- местить код (""" .""") и print на отдельных строках, что без него сделать было бы нельзя. Ключевые слова В языках программирования типа Python существуют слова со специальным зна- чением, называемые ключевыми словами . Ключевое слово for уже встреча- лось нам — оно используется для выполнения кода несколько раз. В этой главе вы узнаете о других ключевых словах. Отступы Давайте еще раз взглянем на вашу программу, выводящую сто раз строку - , ! 23 Введение в программирование Python_ex011.py 1 for i in range(100): 2 print(", !") Как я отмечал ранее, перед ключевым словом print указывается отступ в четыре пробела. Если коротко, то это делается за тем, чтобы Python мог опре- делить, когда начинаются и заканчиваются блоки кода. Также обратите внима- ние, что если в коде используется отступ, этот отступ содержит четыре пробела. Ваша программа не будет работать, если вы используете неправильный отступ, например, три или пять пробелов, или неправильных строк. Другие языки программирования не используют отступы таким образом; вме- сто этого, в них применяются ключевые слова или квадратные скобки. Ниже по- казана та же самая программа, написанная на языке программирования JavaScript . Python_ex012.py 1 # JavaScript. 2 # . 3 for (i = 0; i < 100; i++) { 4 console.log(", !"); 5 } Сторонники Python считают, что использование правильного отступа дела- ет Python менее утомительным для чтения и при написании кода в сравнении с другими языками. Как в примере выше, даже если пустые промежутки не явля- ются частью кода, программисты все равно используют их, чтобы к од было лег- че читать. Типы данных Данные в Python сгруппированы в различные категории, называемые типами данных. В Python каждое значение, например 2 или ", !", называ- ется объектом . Вы узнаете больше об объектах в части II, но пока рассмотрим объект как значение данных в Python, которое имеет три свойства: идентифика- тор, тип данных и, собственно, значение. Идентификатор объекта — это место, где он хранится в памяти вашего компьютера, и оно никогда не меняется. Тип данных объекта — это категория данных, к которой принадлежит объект, она определяет свойства объекта и также никогда не меняется. Значение объекта — это данные, которые он представляет, например, число 2 имеет значение 2. ", !" — объект с типом данных str , сокращение от англий- ского слова string— строка , и значением ", !". Когда вы ссы- лаетесь на объект с типом данныхstr, то называете его строкой. Строка представляет собой последовательность из одного или нескольких символов, помещенных в кавычки. Символ — это один знак, вроде a или 1. Вы можете использовать одинарные или двойные кавычки, но они должны быть одина- ковыми в начале и в конце строки. 24 Часть I Python_ex013.py 1 ", !" >> ", !" Python_ex014.py 1 ', !' >> ", !" Строки используются для представления текста и обладают уникальными свойствами. Числа, которые вы использовали для математических операций в предыду- щем разделе, также являются объектами, но не являются строками. Целые чис- ла (1, 2, 3, 4 и т.д.) имеют тип данных int , сокращенно от английского слова integer — целый . Подобно строкам, у целых чисел есть особые свойства. Напри- мер, вы можете выполнить умножение двух целых чисел, но не можете умно- жить две строки. Вещественные числа (числа с десятичной точкой) имеют тип данных oat 2.1 , 8.2 и 9.9999 все являются объектами с типом данных oat. Они называ- ются числами с плавающей точкой. Как и у всех остальных типов данных, у чи- сел с плавающей точкой есть особые свойства, и они ведут себя определенным образом, подобно целым числам. Python_ex015.py 1 2.2 + 2.2 >> 4.4 Объекты, имеющие тип данных bool , называются булевыми или логически- ми , они принимают значение True или False, то есть могут быть истинными или ложными. Python_ex016.py 1 True >> True Python_ex017.py 1 False >> False Объекты с типом данных NoneType всегда имеют значение None. Они ис- пользуются для представления отсутствия значения. Python_ex018.py 1 None 25 Введение в программирование На протяжении этой главы я объясняю, как испо льзовать различные типы данных. Константы и переменные Вы можете использовать Python для выполнения математических операций, точно так же, как если бы использовали калькулятор. Вы можете складывать, вы- читать, делить, умножать, возводить в степень и делать многое другое. Не забудь- те ввести в оболочку все примеры этого раздела. Python_ex019.py 1 2 + 2 >> 4 Python_ex020.py 1 2 — 2 >> 0 Python_ex021.py 1 4 / 2 >> 2.0 Python_ex022.py 1 2 * 2 >> 4 Константа — это значение, которое никогда не меняется. Каждое из чисел в предыдущем примере является константой: число два всегда будет представлять значение 2. Переменная же напротив относится к значению, которое может из- мениться. Переменная состоит из имени, в котором есть один или несколько символов. Это имя присваивается значению с помощью оператора присваива- ния (символа =). Некоторые языки программирования требуют, чтобы программист указы- вал «объявления » переменных, которые сообщают языку, какой тип данных бу- дет иметь переменная. Например, в языке программирования C переменная соз- дается следующим образом: 1 # $ . 2 int a; 3 a = 144; В Python с этим проще: вы создаете переменную, просто присваивая ей зна- чение с помощью оператора присваивания. 26 Часть I Python_ex023.py 1 b = 100 2 b >> 100 Ниже показано, как изменять значение переменной: Python_ex024.py 1 x = 100 2 x 3 x = 200 4 x >> 100 >> 200 Вы также можете использовать две переменные, чтобы выполнять арифме- тические операции . Python_ex025.py 1 x = 10 2 y = 10 3 z = x + y 4 z 5 a = x - y 6 a >> 20 >> 0 Часто при программировании необходимо увеличить (инкрементировать) или уменьшить (декрементировать) значение переменной. Поскольку это стан- дартная операция, у Python есть специальный синтаксис, позволяющий сокра- щать код. Чтобы увеличить значение переменной, назначьте переменную самой себе, а по другую сторону от знака равенства прибавьте к этой переменной чис- ло, на которое вы хотите увеличить ее значение. Python_ex026.py 1 x = 10 2 x = x + 1 3 x >> 11 27 Введение в программирование Чтобы уменьшить значение переменной, сделайте то же самое, только те- перь вычтите число, на которое вы хотите уменьшить значение переменной. Python_ex027.py 1 x = 10 2 x = x - 1 3 x >> 9 Эти примеры совершенно верны, но существует более лаконичный способ увеличивать и уменьшать значения переменных, и лучше использовать его. Python_ex028.py 1 x = 10 2 x += 1 3 x >> 11 Python_ex029.py 1 x = 10 2 x -= 1 3 x >> 9 Тип данных, которые можно хранить в переменных, не ограничивается це- лыми числами. Переменные могут ссылаться на любой тип. Python_ex030.py 1 hi = ", !" Python_ex031.py 1 my_ oat = 2.2 Python_ex032.py 1 my_boolean = True Вы можете присваивать переменным любые имена, но должны следовать че- тырем правилам: 1. Имена переменных не могут содержать пробелы. Если вы хотите использо- вать в имени два слова, укажите между ними знак нижнего подчеркивания : например, my_variable = "% !". 2. Имена переменных могут содержать только латинские буквы , цифры и сим- вол подчеркивания. 28 Часть I 3. Нельзя начинать имя переменной с цифры. И хотя вы можете начинать пе- ременную с подчеркивания, пока что так не делайте — это отдельная тема, которую мы рассмотрим позже. 4. Вы не можете использовать ключевые слова Python в качестве имен пере- менных. Список ключевых слов можно найти по адресу zetcode.com/lang/ python/keywords. Синтаксис Синтаксис — это набор правил, принципов и процессов, которые определяют структуру предложений на определенном языке, в частности, порядок слов 4 У русского языка есть синтаксис, и у Python есть синта ксис. В Python строки всегда берутся в кавычки — это пример синтаксиса Python. Ниже приведена синтаксически правильная программа Python. Python_ex033.py 1 print(", !") Она верна, потому что вы следовали синтаксису Python, используя кавычки при определении строки. Если бы вы использовали кавычки только с одной сто- роны текста, то нарушили бы синтаксис Python, и ваш код бы не работал. Ошибки и исключения Если вы пишите программу на Python и игнорируете синтаксис этого языка, то при запуске своей программы получите одну или несколько ошибок . Оболочка Python сообщит вам, что ваш код не работает, и выдаст информацию об ошибке. Взгляните, что произойдет, если в Python вы попытаетесь определить строку с кавычками только с одной стороны. Python_ex034.py 1 # & *. 2 my_string = ", . >> File "/Users/coryalthoff/PycharmProjects/se.py", line 1 my_ string = 'd ^ SyntaxError: EOL while scanning string literal Это сообщение указывает, что ваша программа содержит синтаксическую ошибку . Синтаксические ошибки фатальны; программа, содержащая их, не мо- жет работать. Когда вы пытаетесь запустить программу с синтаксической ошиб- кой, Python сообщает об этом в оболочке. Сообщение предоставит вам инфор- мацию о том, в каком файле была ошибка, в какой она произошла строке, и что это была за ошибка. Хотя ошибки могут показаться пугающими, они случаются постоянно. Если в вашем коде была допущена ошибка, вы должны перейти к номеру строки кода, в которой возникла проблема, и попытаться выяснить, что было 4 pythonworld.ru/osnovy/sintaksis-yazyka-python.html 29 Введение в программирование сделано неправильно. В данном примере нужно перейти к первой строке. Если вы внимательно к ней присмотритесь, то заметите, что она содержит лишь от- крывающие кавычки. Чтобы исправить это, закройте кавычки в конце строки и повторно запустите программу. С этого момента я буду оформлять вывод ошиб- ки следующим образом: >> SyntaxError: EOL while scanning string literal Для удобства чтения я буду указывать последнюю строку ошибки. У Python есть два типа ошибок: синтаксические ошибки и исключения . Ис- ключением называется любая ошибка, которая не является синтаксической. ZeroDivisionError — пример исключения, которое возникает, если вы попы- таетесь делить на ноль. В отличие от синтаксических ошибок, исключения не обязательно фатальны (в следующей главе вы узнаете о способе заставить программу работать даже при наличии исключения). Когда появляется исключение, программисты Python го- ворят, что «Python (или вашей программой) было сгенерировано исключение». Ниже приведен пример исключения . Python_ex035.py 1 # & *. 2 10 / 0 >> ZeroDivisionError: division by zero Если в своем коде вы неправильно использовали отступы, то получите ошиб- ку IndentationError Python_ex036.py 1 # & *. 2 y = 2 3 x = 1 >> IndentationError: unexpected indent В процессе обучения программированию вы будете часто получать синтакси- ческие ошибки и исключения (включая те, которые здесь не рассматриваются), но со временем их количество снизится. Помните, когда вы сталкиваетесь с син- таксической ошибкой или исключением, переходите к строке, где возникла про- блема, и всматривайтесь в нее, пока не найдете решение (а если вы оказались в тупике, выполните по иск по тексту ошибки или исключению в Интернете). Арифметические операторы Ранее вы использовали Python для выполнения простых арифметических вы- числений , например, 4 / 2 . Специальные символы, которые мы использовали в этих примерах, называются операторами . Операторы в Python делятся на не- 30 Часть I сколько категорий, и те, что вы встречали до сих пор, называются арифметиче- скими операторами. Ниже приведен список некоторых наиболее распростра- ненных арифметических операторов в Python. Оператор Значение Пример Результат ** Возведение в степень 2 ** 2 4 % Деление по модулю 14 % 4 2 // Целочисленное деление 13 // 8 1 / Деление 13 / 8 1.625 * Умножение 8 * 2 16 - Вычитание 7 - 1 6 + Сложение 2 + 2 4 При выполнении операции деления получают частное и остаток . Частное — это результат деления, а остаток — то, что осталось после операции. Оператор деления по модулю возвращает значение остатка. Например, деление 13 на 5 даст 2 и 3 в остатке. Python_ex037.py 1 13 // 5 >> 2 Python_ex038.py 1 13 % 5 >> 3 Когда вы используете деление по модулю для двух чисел, и остаток отсутству- ет (соответствующий оператор возвращает 0), число четное. Если есть остаток, число нечетное. Python_ex039.py 1 # 2 12 % 2 >> 0 Python_ex040.py 1 # 2 11 % 2 >> 1 Для деления используются два оператора. Первый, //, возвращает неполное частное. 31 Введение в программирование Python_ex041.py 1 14 // 3 >> 4 Второй, /, возвращает результат деления первого числа на второе в виде чис- ла с плавающей точкой. Python_ex042.py 1 14 / 3 >> 4.666666666666667 Вы можете возвести число в степень с помощью оператора **. Python_ex043.py 1 2 ** 2 >> 4 Значения (в этом случае числа) по обе стороны от оператора называются опе- рандами . Вместе два операнда и оператор образуют выражение . Когда ваша про- грамма запускается, Python вычисляет выражение и возвращает единственное значение. Когда вы вводите в оболочку выражение 2 + 2, Python вычисляет его в 4. Порядок операций — это набор правил, используемых для вычисления вы- ражения. Порядок операций в математических равенствах следующий: круглые скобки, возведение в степень, умножение , деление, сложение и вычитание . Скоб- ки являются первоочередными по отношению к возведению в степень, степень яв- ляется первоочередной по отношению к умножению и делению, а те выполняют- ся перед сложением и вычитанием. Если у операторов одинаковая очередность, как в случае 15 / 3 × 2, операция выполняется слева направо. В данном случае от- ветом является результат деления 15 на 3, умноженный на 2. Python следует тому же порядку операций, когда вычисляет значения математических выражений. Python_ex044.py 1 2 + 2 * 2 >> 6 Python_ex045.py 1 (2 + 2) * 2 >> 8 В первом примере сначала вычисляется 2 * 2, поскольку умножение имеет приоритет перед сложением. Во втором примере сначала вычисляется (2 + 2), поскольку выражения в скобках Python всегда вычисляет в первую очередь. 32 Часть I Операторы сравнения Операторы сравнения — иная категория операторов в Python. Подобно ариф- метическим операторам, они используются в выражениях с операндами с обеих сторон. В отличие от выражений с арифметическими операторами, выражения с операторами сравнения принимают значение True или False. Оператор Значение Пример Результат > Больше 100 > 10 True < Меньше 100 < 10 False >= Больше или равно 2 >= 2 True <= Меньше или равно 1 <= 4 True == Равно 6 == 9 False != Не равно 3 != 2 True Выражение с оператором > возвращает значение True, если число слева больше числа справа, и False в противном случае. Python_ex046.py 1 100 > 10 >> True Выражение с оператором < возвращает значение True, если число слева меньше числа справа, и False в противном случае. Python_ex047.py 1 100 < 10 >> False Выражение с оператором >= возвращает значение True, если число слева больше или равно числу справа. В противном случае выражение возвращает False Python_ex048.py 1 2 > = 2 >> True Выражение с оператором <= возвращает значение True, если число слева мень- ше или равно числу справа. В противном случае выражение возвращает False. Python_ex049.py 1 2 < = 2 >> True 33 Введение в программирование Выражение с оператором == возвращает значение True, если два операнда равны. В противном случае выражение возвращает False. Python_ex050.py 1 2 == 2 >> True Python_ex051.py 1 1 == 2 >> False Выражение с оператором != возвращает значение True, если два операнда не равны. В противном случае выражение возвращает False. Python_ex052.py 1 1 ! = 2 >> True Python_ex053.py 1 2 ! = 2 >> False Ранее вы назначали переменные числам, используя оператор =, например x = 100. Возможно, у вас был соблазн прочитать это как «x равно 100», но это неверно. Как вы уже заметили, символ = используется для присвоения значения переменной, а не для проверки на равенство. Когда вы видите x = 100, читай- те выражение как «x получает сто». Оператор сравнения == используется для проверки равенства, поэтому, если вы видите x == 100, читайте выражение как «x равно 100». Логические операторы Логические операторы — еще одна категория операторов в Python. Как и в слу- чае с операторами сравнения, выражения с логическими операторами также принимают значение True или False. Оператор Значение Пример Результат and И True and True True or ИЛИ True or False True not НЕ not True False Ключевое слово and принимает два выражения и возвращает True, если вы- ражения принимают значение True. Если какое-либо из выражений False, опе- ратор and возвращает False. 34 Часть I Python_ex054.py 1 1 == 1 and 2 == 2 >> True Python_ex055.py 1 1 == 2 and 2 == 2 >> False Python_ex056.py 1 1 == 2 and 2 == 1 >> False Python_ex057.py 1 2 == 1 and 1 == 1 >> False В одном выражении ключевое слово and можно использовать несколько раз. Python_ex058.py 1 1 == 1 and 10 != 2 and 2 < 10 >> True Ключевое слово or принимает два и более выражения и возвращает True, если хотя бы одно из них принимает значение True. Python_ex059.py 1 1 ==1 or 1==2 >> True Python_ex060.py 1 1 ==1 or 2==2 >> True Python_ex061.py 1 1 ==2 or 2==1 >> False Python_ex062.py 1 2 ==1 or 1==2 >> False 35 Введение в программирование Как и and, ключевое слово or в одном выражении можно использовать не- сколько раз. Python_ex063.py 1 1 ==1 or 1==2 or 1==3 >> True Это выражение истинно (равно True), поскольку 1 == 1 является True, хотя все остальные выражения принимают значение False. Вы можете поместить ключевое слово not перед выражением, и оно из- менит значение выражения на противоположное. Если выражение принима- ло значение True, то как только перед ним будет помещено not, оно станет False Python_ex064.py 1 not 1 == 1 >> False Python_ex065.py 1 not 1 == 2 >> Tr ue Условные инструкции Ключевые слова if, elif и else используются в условных инструкциях. Ус- ловные инструкции — это тип структуры управления потоком: блок кода, ко- торый может принимать решения, анализируя значения переменных. Условная инструкция представляет собой код , который может выполнять дополнитель- ный код в зависимости от определенного условия. Ниже приведен пример в псевдокоде (ненастоящий код, используемый для иллюстрации примера), что- бы прояснить принцип работы. 1 # $ 2 If (expression) Then 3 (code_area1) 4 Else 5 (code_area2) Этот псевдокод объясняет, что вы можете определить две условных инструк- ции, которые работают вместе. Если выражение, определенное в первой услов- ной инструкции, равно True, выполняется весь код, определенный в code_ area1 . Если выражение, определенное в первой условной инструкции, равно False , выполняется весь код, определенный в code_area2. Первая часть при- мера называется инструкцией if , а последняя называется инструкцией else 36 Часть I Вместе они образуют конструкцию if-else : способ, которым программисты говорят «если это произойдет, сделайте это, в противном случае сделайте то». Ниже приведен пример инструкции if-else в Python. Python_ex066.py 1 home = "A " 2 if home == "A ": 3 print(", A !") 4 else: 5 print(", !") >> , A ! Строки кода 5 и 6 образуют инструкцию if. Инструкция if состоит из стро- ки кода, начинающейся с ключевого слова if, за которым следует выражение, двоеточие, отступ и одна или несколько строк кода, которые должны выпол- няться, если выражение в первой строке принимает значение True. Строки 7 и 8 образуют инструкцию else. Инструкция else начинается с ключевого слова else, за которым следует двоеточие, отступ и одна или несколько строк кода, которые должны выполняться, если выражение в инструкции if равно False Вместе они образуют инструкцию if-else. В этом примере выводится стро- ка , A !, потому что выражение в инструкции if имеет значение True . Если вы измените значение переменной home на B G , выражение в инструкции if примет значение False и запустится инструкция else, что приведет к выводу другой строки, , !. Python_ex067.py 1 home = " B G " 2 if home == "A ": 3 print(", A !") 4 else: 5 print(", !") >> , ! Вы можете использовать инструкцию if отдельно. Python_ex068.py 1 home = "A " 2 if home == "A ": 3 print(", A !") >> , A ! Можно использовать несколько инструкций if-else подряд. 37 Введение в программирование Python_ex069.py 1 x = 2 2 if x == 2: 3 print("H : 2.") 4 if x % 2 == 0: 5 print("H : .") 6 if x % 2 != 0: 7 print("H : .") >> H : 2. >> H : . Каждая инструкция if выполнит свой код только в том случае, если ее выра- жение принимает значение True. В этом случае первые два выражения прини- мают значение True, так что их код выполняется, но третье выражение прини- мает значение False, и его код не выполняется. Если вы действительно хотите сойти с ума, то можете даже поместить одну инструкцию if внутрь другой инструкции if (это называется вложением). Python_ex070.py 1 x = 10 2 y = 11 3 if x == 10: 4 if y == 11: 5 print(x + y) >> 21 В этом случае x + y будет выводиться только в том случае, если выражения в обеих инструкциях if принимают значение True. Инструкцию else нельзя использовать саму по себе, а только в конце ин- струкции if-else. Мы используем ключевое слово elif для создания инструкций elif . elif означает сокращение от «else if». Инструкции elif можно бесконечно добав- лять в инструкцию if-else, чтобы позволить ей принимать дополнительные решения. Если внутри инструкции if-else есть инструкции elif, значение выраже- ния инструкции if оценивается первым. Если это выражение равно True, выпол- няется только его код. Однако если он принимает значение False, тогда оценива- ется каждая последующая инструкция elif. Как только выражение в инструкции elif принимает значение True, выполняется ее код и никакой другой. Если ни одна из инструкций elif не принимает значение True, выполняется код в ин- струкции else. Ниже приведен пример инструкции if-else с инструкциями elif внутри. 38 Часть I Python_ex071.py 1 home = "K " 2 if home == "Q ": 3 print(", Q !") 4 elif home == "K ": 5 print(", K !") 6 elif home == "R ": 7 print(", R !") 8 elif home == " ": 9 print(", !") 10 else: 11 print(", !") >> , K ! Ниже приведен пример, где ни одна из инструкций elif не принимает зна- чение True, поэтому выполняется код инструкции else. Python_ex072.py 1 home = "V " 2 if home == "A ": 3 print(", A !") 4 elif home == " B G ": 5 print(", B G !") 6 elif home == "K ": 7 print(", K !") 8 elif home == "V ": 9 print(", V !") 10 else: 11 print(", !") >> , ! Наконец, ваш код может содержать несколько инструкций if и elif. Python_ex073.py 1 x = 100 2 if x == 10: 3 print("10!") 4 elif x == 20: 5 print("20!") 6 else: 39 Введение в программирование 7 print("$ B W!") 8 if x == 100: 9 print("x 100!") 10 if x % 2 == 0: 11 print("x !") 12 else: 13 print("x !") >> $ B W! >> x 100! >> x ! Инструкции Инструкция — это технический термин, описывающий различные части языка Python. Можете рассматривать инструкцию Python как команду или вычисление. В данном разделе вы подробно рассмотрите синтаксис инструкций. Не беспо- койтесь, если сначала кое-что из этого покажется запутанным — чем больше вре- мени вы будете тратить на практику, тем более понятным все будет становиться. Этот раздел поможет вам понять несколько концепций программирования. В Python есть два вида инструкций: простые и составные. Простые инструк- ции могут быть выражены в одной строке кода, тогда как составные обычно за- нимают несколько строк. Ниже приведены примеры простых инструкций. Python_ex074.py 1 print(", !") >> , ! Python_ex075.py 1 2 + 2 >> 4 Инструкции if и else, а также первая написанная вами в этой главе про- грамма, выводящая строку , ! сто раз, — это все примеры составных инструкций. Составные инструкции состоят из одной или нескольких ветвей . Ветвь со- стоит из двух или более строк кода: заголовка, за которым следует тело . Заголо- вок представляет собой строку кода в ветви, содержащую ключевое слово, за ко- торым следует двоеточие, и последовательность из одной или нескольких строк с отступом. После отступа содержится тело, состоящее из одной или двух про- стых инструкций. Тело — это всего лишь строка кода внутри ветви. Заголовок управляет телом. Наша программа, выводящая , ! сто раз, состоит из одной составной инструкции. 40 Часть I Python_ex076.py 1 for i in range(100): 2 print(", !") >> , ! >> , ! >> , ! Первая строка этой программы — заголовок. Он состоит из ключевого сло- ва for, за которым следует двоеточие. После отступа находится тело — код print(", !") . В этом случае заголовок использует тело для вывода , ! сто раз. Такой код называется циклом; о нем вы узнаете больше в главе 7. Этот код содержит только одну ветвь. В составной инструкции также может быть несколько ветвей. Вы уже сталки- вались с этим в случаях с инструкциями if-else. Всегда, когда за инструкцией if следует инструкция else, результатом является составная инструкция с несколь- кими ветвями. Когда в составной инструкции есть несколько ветвей, эти ветви ра- ботают вместе. В случае с составной инструкцией if-else, когда инструкция if принимает значение True, выполняется тело инструкции if, а тело инструкции else не выполняется . Когда инструкция if принимает значение False, тело ин- струкции if не выполняется, и вместо этого выполняется else. Последний при- мер из предыдущего раздела содержит три составных инструкции. Python_ex077.py 1 x = 100 2 if x == 10: 3 print("10!") 4 elif x == 20: 5 print("20!") 6 else: 7 print("$ B W!") 8 if x == 100: 9 print("x 100!") 10 if x % 2 == 0: 11 print("x !") 12 else: 13 print("x !") >> $ B W! >> x 100! >> x ! 41 Введение в программирование Первая составная инструкция содержит три ветви, вторая — одну, а послед- няя — две. И последнее, что касается инструкций, — между ними могут быть пробелы. Пробелы между инструкциями не влияют на код. Иногда пустое пространство добавляют, чтобы сделать код более читабельным. Python_ex078.py 1 print("V ") 2 print("& ") >> V >> & Словарь терминов Bool : тип данных логических объектов. Float : тип данных вещественных чисел (чисел с десятичной точкой). Int : тип данных целых чисел. None : объект с типом данных NoneType. Его значением всегда является None. NoneType : тип данных объектов None. Str : тип данных строки. Арифметический оператор: категория операторов, используемых в арифмети- ческих выражениях. Ветвь: строительные блоки составных инструкций. Ветвь состоит из двух или более строк кода: заголовка, за которым следует тело. Выражение: код с оператором между двумя операндами. Декрементирование: уменьшение значение переменной. Заголовок: строка кода в ветви, содержащая ключевое слово, за которым следу- ет двоеточие, и последовательность из одной или нескольких строк с отступом. Инкрементирование: увеличение значения переменной. Инструкция elif: инструкции, которые можно бесконечно добавлять в инструк- цию if-else, позволяя последней принимать дополнительные решения. Инструкция else: вторая часть инструкции if-else. Инструкция if: первая часть инструкции if-else. Инструкция if-else: способ, которым программисты говорят «если это прои- зойдет, сделайте это, в противном случае сделайте то». Инструкция: команда или вычисление. Исключение: ошибка, не являющаяся фатальной. Ключевое слово: слово в языке программирования, имеющее особый смысл. Все ключевые слова Python можно найти на сайте theselftaughtprogrammer.io/ keywords. Комментарий: строка (или часть строки) кода, написанная на русском (или дру- гом) языке, которой предшествует специальный символ, сообщающий исполь- 42 Часть I зуемому вами языку программирования, что эту строку (или часть строки) кода следует проигнорировать. Константа: значение, которое никогда не изменяется. Логический оператор: категория операторов, оценивающих значения двух вы- ражений и возвращающих либо True, либо False. Логический : объект с типом данных bool. Его значением является либо True (истина), либо False (ложь). Объект: значение с тремя свойствами: идентификатором, типом данных и зна- чением. Операнд: значение с любой стороны от оператора. Оператор присваивания: символ = в Python. Оператор сравнения: категория операторов, которые используются в выражении, принимающем значение либо True (истина), либо False (ложь). Оператор: символы, использующиеся в выражении с операндами. Переменная: имя, которому с помощью оператора присваивания присвоено значение. Порядок операций: набор правил, используемых в математике при подсчете выражений. Простая инструкция: инструкция, которую можно выразить с помощью одной строки кода. Псевдокод: ненастоящий код, используемый для иллюстрации примера. Символ: один знак, например a или 1. Синтаксис: комплекс правил, принципов и процессов, определяющих структу- ру предложений в данном языке, в частности, порядок слов 5 Синтаксическая ошибка: фатальная ошибка в программировании, вызванная нарушением синтаксиса языка программирования. Составная инструкция: инструкция, обычно занимающая больше одной строки кода. Строка: объект с типом данных str. Значением строки является последователь- ность одного или больше символов, помещенных в кавычки. Структура управления потоком: блок кода, который принимает решения, ана- лизируя значения переменных. Тело: строка кода внутри ветви, которой управляет заголовок. Тип данных: категория данных. Условная инструкция: код, выполняющий дополнительный код при наступле- нии определенных условий. Целое: объект с типом данных int. Его значением является целое число. Число с плавающей точкой: объект с типом данных oat. Его значением явля- ется вещественное число (число с десятичной точкой). Практикум 1. Выведите три различные строки. 2. Напишите программу, которая будет выводить одно сообщение, если значе- ние переменной меньше 10, и другое, если переменная больше или равна 10. 3. Напишите программу, которая будет выводить одно сообщение, если значе- 5 stackover ow.com/questions/1031273/what-is-polymorphism-what-is-it-forand-how-is-it-used 43 Введение в программирование ние переменной меньше или равно 10, другое, если переменная больше 10, но меньше или равна 25, и третье сообщение, если переменная больше 25. 4. Напишите программу, которая выполняет деление двух чисел и выводит остаток. 5. Напишите программу, которая принимает две переменные, делит одну на другую и выводит частное. 6. Напишите программу, которая будет выводить разные строки в зависимости от того, какое целое число было вами присвоено переменной age, содержа- щейся в этой программе. Решения: ch3_challenge1.py — ch3_challenge6.py. |