Неужели не нашлось русских специалистов, чтобы записать курс по пайтону ? Да, можно включить переводчик и слушать с переводом, но это что? Это кто-то считает хорошим и понятным курсом для начинающих? |
Логический тип
Смотреть на 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. Запись длиннее, но понятнее, что является большим преимуществом.