Онлайн-курсы по Python
Выбрать другой урок из курса
Теория урока

Погружение в Python

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

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

Пример
from datetime import datetime

minute_alarm_clock = [0, 15, 30, 45]
alarm_clock = datetime.today().minute

if alarm_clock in minute_alarm_clock:
    print("Сигнал в ", alarm_clock, " мин.")
else:
    print("Пока еще не настало время, сейчас ", alarm_clock, " мин.")        

Теперь разберем каждую строчку. Первая строка импортирует определенную функциональность, которую в дальнейшем мы используем. В данном случае мы взяли только один «подмодуль» библиотеки datetime. Так получилось, что он совпадает с именем библиотеки (такое случается далеко не всегда).

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

Пример
minute_alarm_clock = [0, 15, 30, 45]        

Язык Python обладает встроенными структурами данных. Сейчас рассмотрим только одну из них: список. Это тот же массив, но в отличии от С++, элементы заключаются в квадратных скобках. В примере мы перечислили 4 элемента, которые обозначают минуты, когда должен сработать сигнал будильника. Этот список мы присвоили переменной minute_alarm_clock.

Думаю, необходимо отвлечься и рассказать подробнее о переменных. В том же С++ или Java, перед использованием переменной, необходимо ее сначала объявить, то есть явно указать что мы будем в ней хранить: число, строку, булево значение и т.д. Но в Python не нужно об этом задумываться. Переменные начинают существовать при первом упоминании их в коде, а тип присваиваемых им значений не важен, так как они подстроятся под любой. Нашей переменной присваивается список minute_alarm_clock, поэтому она сама становится списком. Теперь рассмотрим следующую строку.

Пример
alarm_clock = datetime.today().minute        

В ней тоже есть переменная. Здесь остановимся на правой части выражения. Чтобы было проще понять, перепишем строку, введя дополнительную переменную.

Пример
time_now = datetime.today()
alarm_clock = time_now.minute        

Здесь мы вызываем метод today, который является частью подмодуля datetime (т.е. внутри модуля datetime, есть подмодуль datetime, внутри которого есть метод today). О том, что today метод, нам говорят круглые скобки после него. Итак, теперь в переменной time_now хранится объект времени (этот объект состоит из частей). Если вы его выведете на экран, то увидите точные время и дату. Но нам нужны только минуты, поэтому переходим к следующей строке:

Пример
alarm_clock = time_now.minute        

Для тех, кто знаком с другими языками программирования, синтаксис точечной нотации является знакомым. Поясню: чтобы обратиться к минутам, хранящимся в объекте time_now, необходимо просто через точку написать minute. Для того чтобы обратиться к часам, атрибут minute следует заменить на hour. А чтобы узнать какие вообще атрибуты содержит метод today, необходимо обратиться к документации. Следующая строка:

Пример
if alarm_clock in minute_alarm_clock:        

У нас есть список чисел, и есть значение минут. Теперь, чтобы проверить наличие такого значения минут в списке, будем использовать конструкцию if. Ее суть: проверить условие и, если оно истинно, выполнить блок. В отличии от С++, у Python есть оператор in, который в данном случае нам очень поможет. В примере мы проверяем, содержится ли значение минут в определенном нами списке.

Следующим отличием Python от других языков программирования это то, как выделяются блоки. После if указывается условие, далее ставится двоеточие (:), после которого начинается блок, который будет выполняться в случае истинности условия. И это не все. Блок выделяется визуально отступом, как в примере. Если отступа не будет, код не заработает. В С++ можно не делать отступов и не переносить строки, так как блоки выделяются фигурными скобками, а выражения отделяются точкой с запятой.

Ключевое слово else является продолжением конструкции if и выполняется в случаях, когда условие в if ложно.

Можем еще более усложнить пример. Если сигнал будильника не сработал, то проверяем четные или нечетные сейчас минуты:

Пример
from datetime import datetime
minute_alarm_clock = [0, 15, 30, 45]
minute_alarm_clock_odd = [1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31, 33, 35, 37, 39, 41, 43, 45, 47, 49, 51, 53, 55, 57, 59]

time_now = datetime.today()
alarm_clock = time_now.minute

if (alarm_clock in minute_alarm_clock):
    print("Сигнал в ", alarm_clock, " мин.")
elif (alarm_clock in minute_alarm_clock_odd):
    print("Сейчас нечетные минуты: ", alarm_clock, " мин.")
else:
    print("Сейчас четные минуты: ", alarm_clock, " мин.")        

Для этого добавим еще одно ключевое слово: elif. Оно является некоторым гибридом между if и else. Работает такая конструкция следующим образом: если сейчас не время сигнала будильника, то проверяем, есть ли значение минут в списке нечетных минут, и, если есть, то выводим «Сейчас нечетные минуты». Если все условия ложны, то вывести «Сейчас четные минуты».

На этом все. Мы кратко познакомились с синтаксисом Python. Узнали что такое модули, методы и атрибуты. Познакомились с тем как работают переменные и зачем они нужны. Узнали о первой структуре данных – списках. Применили условную конструкцию if/elif/else.

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

<
×
>
Курс «Знакомство с Python»
Урок 1.1. Первое знакомство с Python
Другие курсы
Не публикуйте свой код прямо в комментариях. Во-первых, он плохо отображается. Во-вторых, он может содержать для кого-то «спойлеры», т.е. ответы на практику. Воспользуйтесь специальными сервисами: cssdeck.com или jsfiddle.net.
Комментарии, содержащие код (пару строк не считается), будут безжалостно удаляться.