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

5. Погружение в 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Знакомство с Python
Типы данных в PythonЗнакомство с Python
Написание модулей в PythonЗнакомство с Python
Обработка исключений (try/except) в PythonЗнакомство с Python
Структуры данных в PythonЗнакомство с Python
Работа с файлами в Python Знакомство с Python
Модули в PythonЗнакомство с Python
Еще о возможностях модулей в Python Знакомство с Python
Продолжаем написание классов в PythonЗнакомство с Python
<
×
>
Раздел «Знакомство с Python»
1. УРОК: Первое знакомство с Python
2. ТЕСТ: Небольшой первый тест по Python
3. УРОК: Переменные и комментарии в Python
4. ТЕСТ: Тест по основным понятиям и работе с сайтом
Самые основы
УРОК 5. Погружение в Python
Вы здесь
6. ТЕСТ: Второй вводный тест по Python
7. УРОК: Типы данных в Python
8. УРОК: Форматирование строк в Python
9. УРОК: Условная инструкция if-elif-else в Python
10. УРОК: Преобразование и проверка типов в Python
11. УРОК: Вызов методов цепочкой в Python
Циклы
12. УРОК: Первое знакомство с циклами в Python
13. ТЕСТ: Тест по циклам Python
Немного рандома
14. УРОК: Генерируем случайные числа на Python
15. ТЕСТ: Тест по модулю random Python
Структуры данных
16. УРОК: Структуры данных в Python
17. ТЕСТ: Тест по структурам Python
Списки
18. УРОК: Списки в Python
19. ТЕСТ: Тест по спискам Python
20. УРОК: Изменение списка на месте в Python
21. УРОК: Дополнительно про списки в Python
22. УРОК: Конкатенация и сортировка списков в Python
23. ТЕСТ: Заключительный тест по спискам в Python
Словари
24. УРОК: Словари в Python
25. ТЕСТ: Тест по словарям Python
26. УРОК: Словари и списки: еще глубже
27. УРОК: Перебор элементов словаря в Python
28. УРОК: Внутреннее устройство и сортировка словаря в Python
29. УРОК: Методы словарей и функция len() в Python
30. ТЕСТ: Заключительный тест по словарям
Множества
31. УРОК: Множества в Python
32. УРОК: Методы и особенности множеств в Python
33. УРОК: Отношения между множествами и операции над ними
34. ТЕСТ: Тест по методам множеств в Python
35. ТЕСТ: Тест по операциям над множествами в Python
Кортежи
36. УРОК: Кортежи в Python
37. УРОК: Более подробно о кортежах в Python
38. ТЕСТ: Тест по кортежам в Python
Снова циклы и немного исключений
39. УРОК: Контроль хода выполнения программы в Python
40. УРОК: Цикл while в Python
41. УРОК: Операторы break, continue и pass в Python
42. УРОК: Циклы for/else и while/else в Python
43. УРОК: Обработка исключений (try/except) в Python
44. ТЕСТ: Тест по циклам и управляющим конструкциям
45. ТЕСТ: Тест по обработке исключений
Работаем с файлами
46. УРОК: Работа с файлами в Python
47. УРОК: Оператор with/as для работы с файлами в Python
48. ТЕСТ: Тест по работе с файлами в Python
Итераторы
49. УРОК: Итераторы в Python
50. УРОК: List/dict/set comprehensions (включения) в Python
51. ТЕСТ: Тест по включениям в Python
Функции
52. УРОК: Основы функций в Python
53. ТЕСТ: Тест по основам функций в Python
54. УРОК: Область видимости в Python
55. ТЕСТ: Тест по области видимости в Python
56. УРОК: Замыкания и оператор nonlocal в Python
57. ТЕСТ: Тест по замыканиям и nonlocal в Python
58. УРОК: Аргументы и параметры функций, операторы * и ** в Python
59. ТЕСТ: Тест по аргументам и параметрам функций в Python
60. ТЕСТ: Тест по операторам * и ** в Python
61. УРОК: Анонимные функции: выражения lambda
62. УРОК: Функциональное программирование: map, filter и reduce
63. ТЕСТ: Тест по парадигме функционального программирования
64. УРОК: Генераторы и оператор yield в Python
65. ТЕСТ: Тест по генераторным функциям и выражениям
Модули
66. УРОК: Модули в Python
67. УРОК: Написание модулей в Python
68. УРОК: Пакеты модулей в Python
69. УРОК: Еще о возможностях модулей в Python
70. ТЕСТ: Тест по модулям и пакетам в Python
Объектно-ориентированное программирование
71. УРОК: Основы объектно-ориентированного программирования (ООП) в Python
72. ТЕСТ: Тест по основам ООП в Python
73. УРОК: Основы написания классов в Python
74. УРОК: Продолжаем написание классов в Python
75. УРОК: Более глубокое изучение классов в Python
76. УРОК: Что дальше?
Впервые на сайте Codebra?

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

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

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

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

Закрыть окно