НОЧУ ДПО "Национальный открытый университет "ИНТУИТ"
Опубликован: 24.01.2021 | Доступ: свободный | Студентов: 2489 / 106 | Длительность: 03:57:00
Лекция 4:

Логический тип

< Лекция 1 || Лекция 4: 12345

Смотреть на youtube

Понятно, что без логических переменных и выражений, без логического типа (bool) в языке программирования не обойтись. Множество возможных значений этого типа максимально просто, - значений всего два - истина и ложь () true, false)). В языке Python есть, как и положено, логические константы и переменные, логические операции, функции и выражения. Для тех, кто знаком с логическим типом по работе с каким-либо языком программирования, либо из математики, многие способы работы с логическим типом в Python будут знакомы и понятны. Тем не менее в Python есть особенности, не характерные для математики и других языков программирования. Расширение возможностей логического типа, принятые в Python, на мой взгляд, в большинстве случаев контрпродуктивны из-за несоответствия интуитивному пониманию. Возможно поэтому в довольно популярной книге Марка Лутца "Изучаем Python", многократно переиздаваемой, содержащей более 1200 страниц текста, нет раздела, посвященного логическому типу данных, хотя строкам и арифметике уделяется большое внимание.

Первичные логические выражения

В языке Python есть две логические константы True и False типа bool. Логические константы являются первичными логическими выражениями. Первичными выражениями являются и логические функции, возвращающие значения типа bool. Этот же тип имеют выражения, представленные операциями отношения: <, >, <=, >=, ==, !=.

В большинстве языков программирования отношением, представляющим первичное логическое выражение, называют два арифметических выражения, соединенных знаком операции отношения, например, x1 > x2 или x1 % 2 != 0. Здесь x1 и x2 - переменные арифметического типа, например, int.

В языке Python понятие отношения расширено. Отношение - это последовательность арифметических выражений, соединенных знаками отношений. Конечно, переход от пары выражений к последовательности расширяет возможности, но делает программу менее интуитивно понятной и чреватой ошибками.

Давайте рассмотрим пример отношений, допустимых в языке Python:

# Логический тип 
def test1():
    # операции отношения и первичные логические выражения
    x1 = 5; x2 = 3; x3 = 7; x4 = 12
    p1 = x1 % 2 != 0
    p2 = x1 > x2
    p3 = x2 < x1 < x3
    p4 = x1 > x2 < x3 != x4
    p5 = (x1 > x2) and (x2 < x3) and (x3 != x4)
    print(p1, p2, p3, p4, p5)
test1()

Результаты:


При вычислении p1, p2 используется привычное отношение - пара арифметических выражений, соединенных операцией отношения. Семантика привычна и понятна. Вначале вычисляются арифметические выражения, они затем сравниваются и результат имеет тип bool. При вычислении p3, p4 используется расширенная форма записи отношения, допустимая в Python. Полагаю, что такой формой записи пользоваться не следует. Эквивалентная, интуитивно понятная форма записи выражения для p4 показана при записи выражения p5. Запись длиннее, но понятнее, что является большим преимуществом.

< Лекция 1 || Лекция 4: 12345
Алексей Авилов
Алексей Авилов

Неужели не нашлось русских специалистов, чтобы записать курс по пайтону ? Да, можно включить переводчик и слушать с переводом, но это что? Это кто-то считает хорошим и понятным курсом для начинающих? 

Елена Лаптева
Елена Лаптева

Думаю. что не смогу его закончить. Хотелось предупредить других - не тратьте зря время, ищите другой курс.