Посмотреть все уроки курса
Выбрать другой урок из курса
Поиск по сайту
Теория урока

2.1. Погружение в 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 ложно. Более подробно рассмотрим условную инструкцию 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
Тест 1.2. Небольшой первый тест
Урок 1.3. Переменные и комментарии в Python
Тест 1.4. Тест по основным понятиям и работе с сайтом
Урок 2.1. Погружение в Python
Вы здесь
Тест 2.2. Второй вводный тест по Python
Урок 2.3. Типы данных в Python
Урок 2.4. Форматирование строк в Python
Урок 2.5. Условная инструкция if-elif-else в Python
Урок 2.6. Преобразование и проверка типов в Python
Урок 2.7. Вызов методов цепочкой в Python
Урок 3.1. Первое знакомство с циклами в Python
Тест 3.2. Тест по циклам Python
Урок 4.1. Генерируем случайные числа на Python
Тест 4.2. Тест по модулю random Python
Урок 5.1. Структуры данных в Python
Тест 5.2. Тест по структурам Python
Урок 6.1. Списки в Python
Тест 6.2. Тест по спискам Python
Урок 6.3. Изменение списка на месте в Python
Урок 6.4. Дополнительно про списки в Python
Урок 6.5. Конкатенация и сортировка списков в Python
Тест 6.6. Заключительный тест по спискам в Python
Урок 7.1. Словари в Python
Тест 7.2. Тест по словарям Python
Урок 7.3. Словари и списки: еще глубже
Урок 7.4. Перебор элементов словаря в Python
Урок 7.5. Внутреннее устройство и сортировка словаря в Python
Урок 7.6. Методы словарей и функция len() в Python
Тест 7.7. Заключительный тест по словарям
Урок 8.1. Множества в Python
Урок 8.2. Методы и особенности множеств в Python
Урок 8.3. Отношения между множествами и операции над ними
Тест 8.4. Тест по методам множеств в Python
Тест 8.5. Тест по операциям над множествами в Python
Урок 9.1. Кортежи в Python
Урок 9.2. Более подробно о кортежах в Python
Тест 9.3. Тест по кортежам в Python
Урок 10.1. Контроль хода выполнения программы в Python
Урок 10.2. Цикл while в Python
Урок 10.3. Операторы break, continue и pass в Python
Урок 10.4. Циклы for/else и while/else в Python
Урок 10.5. Обработка исключений (try/except) в Python
Тест 10.6. Тест по циклам и управляющим конструкциям
Тест 10.7. Тест по обработке исключений
Урок 11.1. Работа с файлами в Python
Урок 11.2. Оператор with/as для работы с файлами в Python
Тест 11.3. Тест по работе с файлами в Python
Урок 12.1. Итераторы в Python
Урок 12.2. List/dict/set comprehensions (включения) в Python
Тест 12.3. Тест по включениям в Python
Урок 13.1. Основы функций в Python
Тест 13.2. Тест по основам функций в Python
Урок 13.3. Область видимости в Python
Урок 13.4. Что дальше?
Впервые на сайте Codebra?

Извините за это всплывающее окно, меня они тоже раздражают.

Образовательный ресурс codebra.ru полностью посвящен программированию. Все курсы и уроки находятся на главной странице. Ради интереса можете посмотреть на содержимое курсов по Python, HTML и CSS, JavaScript, C++ и другие, размещенные на главной странице.

Если что-то не нашли, то воспользуйтесь поиском по сайту, который находится на главной странице в самом верху.

Удачи в обучении!

Закрыть окно