{% set warning_icon = '' %}
Часть этой главы основана на учебных пособиях Geek Girls Carrots (https://github.com/ggcarrots/django-carrots).
Давай напишем немного кода!
Для читателей дома: Эта часть объясняется в видео основы Python: целые числа, строки, списки, переменных и ошибки.
Чтобы начать играть с Python, нам нужно открыть командную строку на твоем компьютере. Ты уже должна знать, как это сделать -- мы изучали это в главе Введение в интерфейс командой строки.
После того, как будешь готова, следуйте приведенным ниже инструкциям.
Мы хотим открыть консоль Python, так что набери python если работаешь в Windows, или python3 для Mac OS/Linux, и нажми enter.
{% filename %}command-line{% endfilename %}
$ python3
Python {{ book.py_release }} (...)
Введите "help", "copyright", "credits" или "license" для дополнительной информации.
>>>
После запуска Python, консоль изменилась на >>>. Для нас это означает, что сейчас мы можем использовать только команды на языке Python. Тебе не нужно вводить >>> - Python будет делать это за нас.
Если ты хочешь выйти из консоли Python, в любой момент -- просто введи exit() или используй сочетание клавиш Ctrl + Z для Windows и Ctrl + D для Mac/Linux. Тогда ты больше не будешь видеть >>>.
Сейчас мы не хотим выходить из консоли Python. Мы хотим больше узнать о нем. Начнем с ввода математических действий, таких как 2 + 3 и нажмем enter.
{% filename %}command-line{% endfilename %}
>>> 2 + 3
5Хорошо! Видела как появился ответ? Python знает математику! Можешь попробовать и другие команды, например:
4 * 55 - 140 / 2
Для вычисления экспоненциала, скажем, 2 в степени 3, мы набираем в консоли: {% filename %}command-line{% endfilename %}
>>> 2 ** 3
8Поиграй с этим немного и затем вернись сюда. :)
Как видишь, Python является прекрасным калькулятором. Если тебе интересно, что еще можно сделать…
Как насчет твоего имени? Введи свое имя в кавычках, вот так:
{% filename %}command-line{% endfilename %}
>>> "Ola"
'Ola'Сейчас ты создала свою первую строку! Это последовательность символов, которые могут быть обработаны компьютером. Строка должна всегда начинаться и заканчиваться одинаковым символом. Им может быть как одинарная ('), так и двойная (") кавычка (разницы нет!) Кавычки говорят Python'у, что внутри них находится строка.
Строки можно объединять. Попробуй так:
{% filename %}command-line{% endfilename %}
>>> "Hi there " + "Ola"
'Hi there Ola'Ты также можешь умножать строки на число:
{% filename %}command-line{% endfilename %}
>>> "Ola" * 3
'OlaOlaOla'Если тебе нужно поставить апостроф внутри строки, то есть два способа сделать это.
Используя двойные кавычки:
{% filename %}command-line{% endfilename %}
>>> "Runnin' down the hill"
"Runnin' down the hill"или экранировав апостроф обратной косой чертой (``):
{% filename %}command-line{% endfilename %}
>>> 'Runnin\' down the hill'
"Runnin' down the hill"Прикольно, да? Чтобы увидеть своё имя прописными буквами, просто набери:
{% filename %}command-line{% endfilename %}
>>> "Ola".upper()
'OLA'Ты только что использовала функцию upper для своей строки! Функция (такая как upper()) представляет собой набор инструкций, который должен выполнить Python на заданном объекте (в нашем случае: "Ola") при её вызове.
Если ты хочешь узнать количество букв в своём имени, то и для этого тоже существует функция!
{% filename %}command-line{% endfilename %}
>>> len("Ola")
3Интересно, почему иногда мы вызываем функцию добавлением . к концу строки (как "Ola".upper()), а иногда сначала пишем имя функции и затем помещаем строку в скобки? Итак, в некоторых случаях функции принадлежат объектам, например функция upper(), которая может быть применена только к строкам. В этом случае мы называем функцию методом. В другом случае, функции не относятся к чему-то конкретному и могут использоваться для различных типов объектов, например функция len(). Вот почему мы передаем "Ola" в качестве параметра функции len.
OK, достаточно о строках. Пока ты узнала о:
- консоль - ввод команд (кода) в интерактивную командную строку Python приводит к ответам на Python
- числа и строки - в Python числа используются для вычислений, а строки - для текстовых объектов
- операторы - такие как
+и*, производят действия над значениями для получения нового - функции - такие как
upper()иlen(), выполняют действия над объектами.
Таковы основы каждого языка программирования, который ты можешь выучить. Готова к чему-то посложнее? Мы уверены, что готова!
Давай попробуем кое-что новенькое. Можем ли мы получить длину числа так же, как длину твоего имени? Введи len(304023) и нажми Enter:
{% filename %}{{ warning_icon }} command-line{% endfilename %}
>>> len(304023)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: object of type 'int' has no len()Мы получили нашу первую ошибку! {{ warning_icon }} иконка в нашем случае показывает, что код, который мы пытаемся запустить, не будет работать так, как мы этого ожидаем. Делать ошибки (даже преднамеренные) - это неотъемлемая часть процесса обучения!
Наша ошибка говорит о том, что у объектов типа «int» (целые числа) нет длины. Так что же мы можем сейчас сделать? Может быть мы можем написать наше число в виде строки? У строк ведь есть длина, верно?
{% filename %}command-line{% endfilename %}
>>> len(str(304023))
6Сработало! Мы использовали функцию str внутри функции len. str() преобразует все в строки.
- Функция
strпреобразует объекты в строки - Функция
intпреобразует объекты в целые числа
Важно: мы можем преобразовать число в текст, но не всегда удается преобразовать текст в числа - например, каков будет результат
int('hello')?
Переменные -- важное понятие в программировании. Переменная -- это не более чем имя для чего-то, чтобы использовать его позднее. Программисты используют переменные для хранения данных, чтобы их код был более читабельным, и для того, чтобы им не пришлось запоминать что есть что.
Допустим, мы хотим создать новую переменную с именем name:
{% filename %}command-line{% endfilename %}
>>> name = "Ola"Мы указали, что имя равно Ola.
Как ты уже заметила, твоя программа не возвращает ничего, как было ранее. Так откуда мы знаем, что переменная действительно существует? Просто введи name и нажми Enter:
{% filename %}command-line{% endfilename %}
>>> name
'Ola'Ура! Твоя первая переменная:)! Ты всегда можешь изменить то, к чему она относится:
{% filename %}command-line{% endfilename %}
>>> name = "Sonja"
>>> nameТы можешь использовать их также и в функциях:
{% filename %}command-line{% endfilename %}
>>> len(name)
5Круто, правда? Переменными, конечно, может быть что угодно, и цифры тоже! Попробуй следующее:
{% filename %}command-line{% endfilename %}
>>> a = 4
>>> b = 6
>>> a * b
24Но что делать, если мы использовали неправильное имя? Можешь догадаться, что произойдет? Давай попробуем!
{% filename %}{{ warning_icon }} command-line{% endfilename %}
>>> city = "Tokyo"
>>> ctiy
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'ctiy' is not definedОшибка! Как ты можешь видеть, в Python есть различные типы ошибок, эта называется NameError. Python выдаст эту ошибку при попытке использовать переменную, которая пока не определена. При возникновении этой ошибки проверь свой код, чтобы узнать, не написала ли ты неправильно имя переменной.
Попрактикуйся в этом какое-то время и посмотри, что ты сможешь сделать!
Попробуй ввести:
{% filename %}command-line{% endfilename %}
>>> name = 'Maria'
>>> name
'Maria'
>>> print(name)
MariaЕсли просто ввести name, интерпретатор Python вернет строковое представление переменной 'name', которым, в нашем случае, являются буквы M-a-r-i-a, окруженные одинарными кавычками, ''. Когда ты вводишь print(name), Python "печатает" содержание переменной на экран, без кавычек, что удобнее.
Как мы увидим позднее, print() пригодится, когда нам будет нужно печатать что-то изнутри функций, или когда мы захотим напечатать что-то на нескольких строчках.
Помимо строк и целых чисел Python имеет богатую коллекцию других типов объектов. Сейчас мы собираемся представить тебе один из них - list (список). Списки - это именно то, о чем ты подумала: объекты, которые являются списками других объектов. :)
Давай начнем с создания списка:
{% filename %}command-line{% endfilename %}
>>> []
[]Да, это пустой список. Не особенно полезен, да? Давай создадим список лотерейных номеров. Мы не хотим повторять их каждый раз, так что присвоим список переменной:
{% filename %}command-line{% endfilename %}
>>> lottery = [3, 42, 12, 19, 30, 59]Замечательно, у нас есть список! Что мы можем с ним сделать? Для начала посмотрим как много лотерейных номеров в нашем списке. Есть идеи какую функцию можно использовать для этого? Ты её уже знаешь!
{% filename %}command-line{% endfilename %}
>>> len(lottery)
6Точно! len() вернет тебе количество объектов в списке. Удобно, правда? Может быть мы теперь отсортируем его:
{% filename %}command-line{% endfilename %}
>>> lottery.sort()Эта команда не возвращает ничего, она просто меняет порядок номеров в списке. Давайте выведем его на экран и посмотрим что получилось:
{% filename %}command-line{% endfilename %}
>>> print(lottery)
[3, 12, 19, 30, 42, 59]Как видишь, номера в списке теперь отсортированы от меньшего к большему. Поздравляем!
Может быть нам нужно изменить порядок? Давай сделаем это!
{% filename %}command-line{% endfilename %}
>>> lottery.reverse()
>>> print(lottery)
[59, 42, 30, 19, 12, 3]Если хочешь добавить что-то к своему списку, то можешь воспользоваться этой командой:
{% filename %}command-line{% endfilename %}
>>> lottery.append(199)
>>> print(lottery)
[59, 42, 30, 19, 12, 3, 199]Если ты хочешь получить первый номер в списке, то можешь воспользоваться индексами. Индекс - это номер позиции в списке, на котором находится нужное нам значение. Программисты предпочитают начать считать с 0, так что первому объекту в списке соответствует индекс 0, следующему —1, и так далее. Попробуй ввести:
{% filename %}command-line{% endfilename %}
>>> print(lottery[0])
59
>>> print(lottery[1])
42Как видишь, ты можешь обратиться к различным объектам в своем списке используя имя списка и индекс объекта в квадратных скобках.
Чтобы удалить что-то из вашего списка, нужно использовать индексы, как мы узнали выше, и метод pop(). Давай попробуем закрепить пройденное примером; мы будем удалять первый элемент из нашего списка.
{% filename %}command-line{% endfilename %}
>>> print(lottery)
[59, 42, 30, 19, 12, 3, 199]
>>> print(lottery[0])
59
>>> lottery.pop(0)
59
>>> print(lottery)
[42, 30, 19, 12, 3, 199]Сработало как по волшебству!
В качестве дополнительной тренировки попробуй следующие индексы: 6, 7, 1000, -1, -6 и -1000. Сможешь предсказать результат? Видишь логику работы?
Ты можешь найти перечень всех методов, относящихся к списку, в этой главе официальной документации Python: https://docs.python.org/3/tutorial/datastructures.html
Для занимающихся дома: эта глава освещена в видео Как работает Интернет.
Словари схожи со списками, но ты обращаешься к значениям словаря по ключу, а не по индексу. Ключом может быть любая строка или число. Давай создадим пустой словарь:
{% filename %}command-line{% endfilename %}
>>> {}
{}Это показывает что мы создали пустой словарь. Ура!
Теперь попробуй следующую команду (можешь заменить значения на своё имя, страну и т. д.):
{% filename %}command-line{% endfilename %}
>>> participant = {'name': 'Ola', 'country': 'Poland', 'favorite_numbers': [7, 42, 92]}Этой командой ты создала переменную participant с тремя парами ключ-значение:
- Ключ
name, указывающий на значение'Ola'(строковыйобъект), - ключ
country, указывающий на значение'Poland'(еще однастрока), - и ключ
favorite_numbers, указывающий на значение[7, 42, 92](объект типасписокс тремя числами внутри).
Значение конкретного ключа можно узнать следующим образом:
{% filename %}command-line{% endfilename %}
>>> print(participant['name'])
OlaВидишь, синтаксис похож на работу со списком. Но вместо того чтобы запоминать индекс, тебе нужно помнить ключ.
Что случится, если мы спросим у Python значение несуществующего в словаре ключа? Можешь предположить? Давай попробуем и узнаем наверняка!
{% filename %}{{ warning_icon }} command-line{% endfilename %}
>>> participant['age']
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: 'age'Смотри, другая ошибка! Эта называется KeyError. Python услужливо напоминает, что ключа 'age' не существует в словаре.
Когда стоит использовать словарь, а когда список? Это хороший вопрос для самостоятельного размышления. Сделай предположение перед тем, как читать дальше.
- Тебе нужна упорядоченная последовательность элементов? Список - наш выбор.
- Тебе нужны сочетания ключ - значение, чтобы быстро искать значения (по ключу) в дальнейшем? Словарь отлично подойдет.
Словари, как и списки, изменяемы, т. е. они могут быть изменены после того как были созданы. Ты можешь добавить новые пары ключ/значение в словарь следующим образом:
{% filename %}command-line{% endfilename %}
>>> participant['favorite_language'] = 'Python'Как и в случае со списками, применяя функцию len() к словарю, ты получишь число пар ключ/значение. Попробуй сама:
{% filename %}command-line{% endfilename %}
>>> len(participant)
4Надеюсь, все вышеизложенное понятно. :) Готова к новым приключениям со словарями? На следующей строке тебя ждут изумительные вещи.
Ты можешь использовать команду pop для удаления элементов из словаря. Скажем, ты хочешь удалить элемент с ключом 'favorite_numbers', просто набери следующую команду:
{% filename %}command-line{% endfilename %}
>>> participant.pop('favorite_numbers')
[7, 42, 92]
>>> participant
{'country': 'Poland', 'favorite_language': 'Python', 'name': 'Ola'}Как видно, пара ключ-значение с ключом 'favorite_numbers' была удалена.
Помимо этого, ты можешь заменить значение, ассоциированное с уже существующим ключом. Набери:
{% filename %}command-line{% endfilename %}
>>> participant['country'] = 'Germany'
>>> participant
{'country': 'Germany', 'favorite_language': 'Python', 'name': 'Ola'}Значение, на которое ссылается ключ 'country' было изменено с 'Poland' на 'Germany'. Захватывает? Еще бы! Ты выучила еще одну потрясающую штуку.
Шикарно! Теперь ты знаешь немало о программировании. Мы познакомились с:
- ошибками - теперь ты знаешь как читать и анализировать ошибки, которые возникают, если Python не понимает твоей команды
- переменными - именами для объектов, которые упрощают твой код и делают его более читабельным
- списками - последовательностями объектов в заданном порядке
- словарями - объектами, хранящими пары ключ-значение
Готова к продолжению? :)
Для занимающихся дома: эта глава освещена в видео Как работает Интернет.
Немалая часть программирования требует сравнения вещей. Что проще всего сравнить друг с другом? Числа, конечно. Давай посмотрим как это работает:
{% filename %}command-line{% endfilename %}
>>> 5 > 2
True
>>> 3 < 1
False
>>> 5 > 2 * 2
True
>>> 1 == 1
True
>>> 5 != 2
True
>>> len([1, 2, 3]) > len([4, 5])
TrueМы дали Python несколько чисел для сравнения. Как видишь, Python может не только сравнивать числа, но и значения математических выражений, таких как 2 * 2, а так же сравнивать результат функции len([4, 5]) - 2 . Неплохо, да?
Хочешь спросить почему мы написал двойной символ равенства ==, чтобы проверить одинаковы ли числа? Потому что одинарные символ равенства = уже задействован под присваивание значения переменным. Ты всегда, всегда должна писать два символа равенства ==, если хочешь проверить одинаковы ли объекты. Мы также можем проверить различаются ли объекты. Для этого, мы используем !=, как показано в примере выше.
Дадим Python еще два задания:
{% filename %}command-line{% endfilename %}
>>> 6 >= 12 / 2
True
>>> 3 <= 2
FalseС > и < все понятно, но что значат >= и <=? Читай их следующим образом:
- x
>y означает: x больше y - x
<y означает: x меньше y - x
<=y означает: x меньше или равен y - x
>=y означает: x больше или равен y
Супер! Хочешь еще? Тогда попробуй вот это:
{% filename %}command-line{% endfilename %}
>>> 6 > 2 and 2 < 3
True
>>> 3 > 2 and 2 < 1
False
>>> 3 > 2 or 2 < 1
TrueТы можешь передать Python так много чисел, как захочешь, и он будет возвращать ответ! Хитро, правда?
- and - если ты используешь
andоператор, оба сравнения по бокам от него должны быть True (верны), чтобы результат всей команды был равен True - or - если ты используешь
orоператор, достаточно одному из сравнений по бокам от него быть равным True, чтобы результат всей команды также равнялся True
Ты когда-нибудь слышала выражение "сравнивать яблоки и апельсины"? Попробуем что-то подобное в Python:
{% filename %}{{ warning_icon }} command-line{% endfilename %}
>>> 1 > 'django'
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: '>' not supported between instances of 'int' and 'str'Как мы видим, Python не знает как сравнить число (int) и строку (str) между собой. Поэтому он просто возвращает нам ошибку TypeError и предупреждает, что объекты заданных типов не могут быть сравнены.
Кстати, вы только что узнали о новом типе объекта на Python. Он называется Boolean.
Существует только два логических объекта:
- True
- False
Чтобы Python понимал тебя, ты всегда должна писать True с заглавной буквы (остальные прописные). true, TRUE, tRUE не будет восприниматься -- только True. (Та же логика применима к False, само собой.)
Ты можешь присваивать переменным логические значения! Смотри сюда:
{% filename %}command-line{% endfilename %}
>>> a = True
>>> a
TrueИли это можно сделать так:
{% filename %}command-line{% endfilename %}
>>> a = 2 > 5
>>> a
FalseПопрактикуйся и развлекись с логическими значениями на примере этих выражений:
True and TrueFalse and TrueTrue or 1 == 11 != 2
Поздравляем! Логические значения одна из самых классных фишек программирования и ты только что научилась ими пользоваться!
Для занимающихся дома: эта глава освещена в видео Как работает Интернет.
До сих пор мы писали весь код в интерактивной консоли, где Python сразу анализировал, обрабатывал и выполнял наши команды. Мы были ограничены одной строкой. Обычно, программы сохраняются в файлах и выполняются интерпретатором или компилятором нашего языка программирования. Пока мы только просили интерпретатор Python выполнять наши однострочные команды из консоли. Однако, нам понадобится больше места для следующих задач, поэтому задача минимум:
- Закрыть интерактивную консоль Python
- Открыть наш текстовый редактор
- Сохранить код в новом файле
- Запустить его!
Чтобы закрыть интерактивную консоль Python просто набери функцию ~~~ exit()~~~ :
{% filename %}command-line{% endfilename %}
>>> exit()
$Это вернет тебя в командную строку.
Ранее мы выбрали редактор кода из раздела редактор кода. Теперь нам нужно открыть редактор и написать код в новый файл (или если вы используете Chromebook, создайте новый файл в облачном IDE и откройте файл, который будет включен в редактор кода):
{% filename %}editor{% endfilename %}
print('Hello, Django girls!')Очевидно, ты уже искушенный Python разработчик, так что не стесняйся добавить что-нибудь по своему вкусу из ране изученного.
Теперь нам нужно сохранить файл с кодом и дать ему подходящее имя. Давай назовем его python_intro.py и сохраним на рабочий стол. Мы можем назвать файл как хотим, но важно чтобы название заканчивалось на .py. Расширение .py говорит операционной системе, что это исполняемый файл python, и Python может его запустить.
Примечание Ты должна уде была заметить одну из крутейших вещей в редакторах кода: цвета! В интерактивной консоли Python весь текст был одного цвета, сейчас же функция
defв определении функции, с которым мы скоро познакомимся). Это одна из причин, по которой мы используем редакторы кода. :) :)
После сохранения файла пришло время запустить его! Используя навыки из раздела о командной строки, открой терминал и поменяй текущую директорию на рабочий стол.
Для Mac команда будет выглядеть так:
{% filename %}command-line{% endfilename %}
$ cd ~/Desktop
На Линукс это будет так:
{% filename %}command-line{% endfilename %}
$ cd ~/Desktop
(Помните, что слово "Рабочий стол" может быть переведено на ваш локальный язык.)
В командной строке Windows это будет так:
{% filename %}command-line{% endfilename %}
> cd %HomePath%\Desktop
И для Windows Powershell это будет выглядеть так:
{% filename %}command-line{% endfilename %}
> cd $Home\Desktop
Если ты застряли, попроси помощи. Именно для этого здесь нужны наставники!
Теперь используй Python чтобы запустить код в файле:
{% filename %}command-line{% endfilename %}
$ python3 python_intro.py
Hello, Django girls!
Примечание: в Windows 'python3' не распознается как команда. Вместо этого используй 'python' для выполнения файла:
{% filename %}command-line{% endfilename %}
> python python_intro.pyОтлично! Ты только что запустила свою первую программу, чей код был сохранен в файле. Чувствуешь воодушевление?
Можно передвигаться дальше к такому незаменимому в программировании инструменту как:
Зачастую определенный код в программе должен выполняться только при соблюдении определенных условий. Поэтому в Python есть такая вещь как условный оператор if.
Замени код в своем файле python_intro.py на:
{% filename %}python_intro.py{% endfilename %}
if 3 > 2:Если мы сохраним его и запустим, то получим ошибку:
{% filename %}{{ warning_icon }} command-line{% endfilename %}
$ python3 python_intro.py
File "python_intro.py", line 2
^
SyntaxError: unexpected EOF while parsing
Python предполагает, что мы должны дать ему инструкции, которые будут им выполнены при соблюдении условия 3 > 2 (т. е. при равенстве условия логическому значению True). Давай попробуем заставить Python напечатать на экране “It works!”. Внеси следующие изменения в python_intro.py:
{% filename %}python_intro.py{% endfilename %}
if 3 > 2:
print('It works!')Обратила внимание как мы сделали отступ во второй строке из 4 символов пробела? Мы поступаем так, чтобы Python понимал какой код после условного оператора if должен быть выполнен, если условие равно True. Можно ограничиться и одним пробелом, однако, практически все программисты Python используют 4, чтобы код выглядел аккуратно и читабельно. Один Tab будет также считаться за 4 пробела - до тех пор, пока тебе это позволяет редактор кода. Когда ты сделала свой выбор, не меняй его! Если у ты уже используешь 4 пробела в качестве отступа, то и для всех будущих отступов используй ихи, в противном случае ты можешь столкнуться с проблемами.
Сохраняем и запускаем еще раз:
{% filename %}command-line{% endfilename %}
$ python3 python_intro.py
It works!Примечание: запомни, что в Windows 'python3' не распознается как команда. Теперь замени 'python3' на 'python' для выполнения файла.
В предыдущем пример код выполнялся только когда условие равнялось True. Однако, Python имеет операторы elif и else:
{% filename %}python_intro.py{% endfilename %}
if 5 > 2:
print('5 is indeed greater than 2')
else:
print('5 is not greater than 2')Если запустить этот код, он напечатает:
{% filename %}command-line{% endfilename %}
$ python3 python_intro.py
5 is indeed greater than 2
Если 2 больше 5, то будет выполнена следующая команда. Просто, правда? Давай посмотрим как работает оператор elif:
{% filename %}python_intro.py{% endfilename %}
name = 'Sonja'
if name == 'Ola':
print('Hey Ola!')
elif name == 'Sonja':
print('Hey Sonja!')
else:
print('Hey anonymous!')и запускаем:
{% filename %}command-line{% endfilename %}
$ python3 python_intro.py
Hey Sonja!
Видишь, что произошло? elif позволяет добавить дополнительные условия, которые запускаются если предыдущие не срабатывают.
Можно использовать сколько угодно elif после первого if. Например:
{% filename %}python_intro.py{% endfilename %}
volume = 57
if volume < 20:
print("It's kinda quiet.")
elif 20 <= volume < 40:
print("It's nice for background music")
elif 40 <= volume < 60:
print("Perfect, I can hear all the details")
elif 60 <= volume < 80:
print("Nice for parties")
elif 80 <= volume < 100:
print("A bit loud!")
else:
print("My ears are hurting! :(")Python проходит через каждую проверку условия и выводит:
{% filename %}command-line{% endfilename %}
$ python3 python_intro.py
Perfect, I can hear all the details
Комментарии - это строки, начинающиеся с #. Вы можете написать все, что вы хотите после # и Python будет игнорировать это. Комментарии могут упростить ваш код для понимания другими людьми.
Давайте посмотрим, как это выглядит:
{% filename %}python_intro.py{% endfilename %}
# Change the volume if it's too loud or too quiet
if volume < 20 or volume > 80:
volume = 50
print("That's better!")Вам не нужно писать комментарий для каждой строки кода, но они полезны для объяснения, почему ваш код что-то делает, или предоставление сводной информации, когда она делает что-то сложное.
В последних трех упражнениях ты познакомилась с:
- сравнением вещей - в Python ты можешь сравнивать вещи друг с другом при помощи
>,>=,==,<=,<иand,orоператоров - Boolean - тип объекта, который может иметь только два значения:
TrueилиFalse - сохранением файлов - хранение кода в файлах позволяет выполнять длинные программы.
- if...elif...else - условные операторы, которые позволяют выполнять код только при определенных условиях.
- комментариями - строки, на которых Python не будет выполняться, что позволит документировать ваш код
Пришло время для последней части этой главы!
Для занимающихся дома: эта глава освещена в видео Как работает Интернет.
Помнишь функции, такие как len(), которые можно использовать в Python? Тогда у нас есть хорошие новости — сейчас ты научишься писать свои собственные функции!
Функция - это последовательность инструкций, которые должен выполнить Python. Каждая функция в Python начинается с ключевого слова def, имеет свое имя и параметры. Давай посмотрим. Замени код в python_intro.py на следующий:
{% filename %}python_intro.py{% endfilename %}
def hi():
print('Hi there!')
print('How are you?')
hi()Отлично, наша первая функция готова!
Ты можешь задаться вопросом, почему мы написали имя функции в конце файла. Когда мы пишем def hi(): и далее строки с отступом, мы описываем инструкции, которые определяют, что должна выполнять функция hi(). Python прочитает и запомнит эти инструкции, но они не будут выполнены немедленно. Чтобы попросить Python выполнить эту функцию мы должны написать вызов этой функции: hi(). Python читает файл и исполняет его сверху вниз, поэтому мы описываем функцию в файле перед тем, как вызываем ее.
Давай запустим и посмотрим что произойдет:
{% filename %}command-line{% endfilename %}
$ python3 python_intro.py
Hi there!
How are you?
Примечание: если это не работало, не паникуй! Вывод поможет вам определить, почему:
- Если ты получила
KeyError, это вероятно означает, что ты ввела что-то неправильное, поэтому проверь, что ты использовала одно то же имя при создании функции сdef hi():и при вызове функции сhi()</0>. - Если вы получили
IndentationError, проверь, что обе строкиprintимеют одинаковые пробелы в начале строки: python хочет, чтобы весь код внутри функции был аккуратно выровнен. - Если вообще нет вывода, проверь, что последний
hi()не имеет отступов - если есть, эта строка тоже станет частью функции и никогда не будет выполняться.
Это было просто! Давай напишем нашу первую функцию с параметрами. Мы будем использовать предыдущий пример - функцию, которая пишет 'hi' и имя пользователя:
{% filename %}python_intro.py{% endfilename %}
def hi(name):Как ты можешь заметить, мы передали нашей функции параметр name:
{% filename %}python_intro.py{% endfilename %}
def hi(name):
if name == 'Ola':
print('Hi Ola!')
elif name == 'Sonja':
print('Hi Sonja!')
else:
print('Hi anonymous!')
hi()Помни: функция print расположена внутри блока оператора if с отступом в четыре пробела. Это потому, что она запускается тогда, когда выполняется условие. Давай посмотрим, как это работает:
{% filename %}{{ warning_icon }} command-line{% endfilename %}
$ python3 python_intro.py
Traceback (most recent call last):
File "python_intro.py", line 10, in <module>
hi()
TypeError: hi() missing 1 required positional argument: 'name'
Упс, ошибка. К счастью, Python выдает довольно подробное сообщение об ошибке. Оно говорит нам, что функция hi() (которую мы определили) имеет один обязательный аргумент (name) и мы забыли передать его при вызове функции. Давай исправим это в конце файла:
{% filename %}python_intro.py{% endfilename %}
hi("Ola")И запустим еще раз:
{% filename %}command-line{% endfilename %}
$ python3 python_intro.py
Hi Ola!
И если мы поменяем имя?
{% filename %}python_intro.py{% endfilename %}
hi("Sonja")И повторим:
{% filename %}command-line{% endfilename %}
$ python3 python_intro.py
Hi Sonja!
Теперь, как ты думаешь, что произойдет, если ты наберешь другое имя? (Не Ola или Sonja) Попробуй сама и проверь была ли ты права. Результат должен быть таким:
{% filename %}command-line{% endfilename %}
Hi anonymous!
Шикарно, верно? Так тебе не придется повторяться каждый раз, когда ты захочешь изменить имя. И это именно та причина, для которой нам и нужны функции - ты никогда не захочешь повторять свой код!
Давай сделаем кое-что умнее - тут больше двух имен, и создание условия для каждого было бы сложным, правда? Замени часть своего файла на следующее:
{% filename %}python_intro.py{% endfilename %}
def hi(name):
print('Hi ' + name + '!')
hi("Rachel")Давай выполним этот код:
{% filename %}command-line{% endfilename %}
$ python3 python_intro.py
Hi Rachel!
Поздравляем! Ты только что научилась писать свои собственные функции :)
Для занимающихся дома: эта глава освещена в видео Как работает Интернет.
Ну вот и последняя часть. Быстро время пролетело, верно? :)
Программисты не любят повторяться. Программирование — это автоматизация вещей, поэтому мы не хотим приветствовать каждого человека по имени вручную, верно? Здесь пригодятся циклы.
Еще помнишь о списках? Давай создадим список девушек:
{% filename %}python_intro.py{% endfilename %}
girls = ['Rachel', 'Monica', 'Phoebe', 'Ola', 'You']Мы хотим поздороваться с каждой по имени. У нас есть функция hi, которая этим и занимается, так что давай поместим её в цикл:
{% filename %}python_intro.py{% endfilename %}
for name in girls:Оператор ~~~ for~~~ работает по схожему принципу что и ~~~ if~~~ ; код после обоих операторов должен иметь отступ в четыре пробела.
Ниже полный код, который должен быть у нас в файле:
{% filename %}python_intro.py{% endfilename %}
def hi(name):
print('Hi ' + name + '!')
girls = ['Rachel', 'Monica', 'Phoebe', 'Ola', 'You']
for name in girls:
hi(name)
print('Next girl')И после запуска:
{% filename %}command-line{% endfilename %}
$ python3 python_intro.py
Hi Rachel!
Next girl
Hi Monica!
Next girl
Hi Phoebe!
Next girl
Hi Ola!
Next girl
Hi You!
Next girl
Как ты можешь заметить, все команды внутри цикла for (с отступом от левого края) будут выполняться для каждого элемента списка girls.
Ты также можешь использовать цикл for на числах, используя функцию range:
{% filename %}python_intro.py{% endfilename %}
for i in range(1, 6):
print(i)Что выведет на экран:
{% filename %}command-line{% endfilename %}
1
2
3
4
5
Функция range создает список чисел, следующих от первого до второго с заданным шагом (начало, конец и шаг мы передаем функции как параметры, если шаг не указать, как в примере выше, он будет по умолчанию равен 1).
Обрати внимание что второе число (конец списка) не включается в результат работы функции (range(1, 6) создает список от 1 до 5, не включающий 6). Это потому, что «range» — полуоткрытый диапазон, то есть включает в себя первое значение, но не включает последнего.
Вот и всё. Ты чертовски крута! Эта глава была непростой, так что ты можешь гордиться собой. Мы-то точно тобой гордимся — вон как далеко продвинулась уже!
Для официального и полного руководства загляни на https://docs.python.org/3/tutorial/. Там ты найдешь более углубленные и подробные инструкции по изучению языка. Удачи! :)
Тебе может потребоваться перерыв - прогуляйся и дай отдых глазам перед тем, как мы перейдем к следующей главе. :)
