Конструкции управления потоком
@Pycoders
Логический (булев) тип данных - bool
Для начала стоит обсудить этот важный аспект, потому что он будет практически ключевым. Логический тип представлен двумя постоянными значениями True и False (Истина и ложь). Значения используются для представления истинности выражения. В числовой эквивалент можно перевести как 1 и 0. Для общего развития стоит отметить, что данный тип является подтипом int.
Значения других типов данных можно конвертировать в логической тип с помощью bool(), которое возвращает True или False в зависимости от первоначального значения.
result = bool(1) # True
result = bool(0) # False
result = bool(5.2) # True
result = bool('hello') # True
result = bool('') # False
Обратите внимание на то, что bool() от пустой строки возвращает False.
"#" используется для обозначения комментария. Текст после "#" игнорируется интерпретатором и не влияет на остальную программу.
Логические сравнения
< - Меньше; условие верно, если первый операнд меньше второго.
> - Больше; условие верно, если первый операнд больше второго.
<= - Меньше или равно.
>= - Больше или равно.
== - Равенство. Условие верно, если два операнда равны.
!= - Неравенство. Условие верно, если два операнда неравны.
Распространенная ошибка новичков. Не стоит путь = и ==, т. к. "=" - оператор присваивания, а "==" - оператор сравнения.
result = 1 > 2 # False result = 6 != 5 # True result = 3 >= 3 # True
Сравнивать можно даже строки. При сравнении принимается во внимание символы и их регистр. Так, цифровой символ условно меньше, чем любой алфавитный символ. Алфавитный символ в верхнем регистре условно меньше, чем алфавитные символы в нижнем регистре. Если начальные символы представляют алфавитные символы в одном и том же регистре, то смотрят по алфавиту.
result = 'b' > 'a' # True result = '1c' > 'a' # True result = 'A' > 'a' # False
Еще один пример, который стоит один раз посмотреть, забыть и никогда не применять.
result = '💀' > '31' # True
Логические операторы
- and - Логический оператор "И". Условие будет истинным если оба операнда истина.
True and True равно True.
True and False равно False.
False and True равно False.
False and False равно False.
- or - Логический оператор "ИЛИ". Если хотя бы один из операндов истинный, то и все выражение будет истинным.
True or True равно True.
True or False равно True.
False or True равно True.
False or False равно False.
- not - Логический оператор "НЕ". Изменяет логическое значение операнда на противоположное.
not True равно False.
not False равно True.
Сначала выполняются операторы and, а потом уже or. Ананлог приоритетности опреторов в математике - умножение/деление и сложение/вычитание.
x, y, z = True, False, True result = x and y or z print(result) # True
Операторы тождественности
Может показаться сложным, но в дальнейшем программировании на python всё станет понятно. В данный момент просто примите как должное.
- is - Возвращает истину, если оба операнда указывают на один объект; x is y вернет истину, если id(x) будет равно id(y).
- is not - Возврашает ложь если оба операнда указывают на один объект; x is not y, вернет истину если id(x) не равно id(y).
Конструкции управления потоком
Это один из основных элементов в программировании, поэтому лучше усвоить и осознать всё сразу. Условная инструкция if-elif-else (её ещё иногда называют оператором ветвления) - основной инструмент выбора в Python. Проще говоря, она выбирает, какое действие следует выполнить, в зависимости от значения переменных в момент проверки условия. После условия в if/elif и после else ставится двоеточие, а перед строками в самом блоке кода ставятся по 4 пробела.
Реализуем небольшую программу, которая определяет пользователя на совершеннолетие.
age = 17
if age >= 18:
print('Доступ разрешен.')
elif age == 17:
print('Подожди еще немного.')
else:
print('Придется подрости.')
Программа выдаст: Подожди еще немного.
Python смотрит, истинно ли условие после if, оно оказывается ложно, так как 17 не больше и не равно 18; поэтому смотрится смледующее условие, 17 равно 17 - значит, блок кода выполняется. Если бы и это условие оказалось бы ложным, то выполнился бы блок кода в else.
В строках после if/elif/else надо использовать по 4 пробела перед каждой строчкой. Табуляцию тоже можно использовать, но рекомендуются именно пробелы.
Однако как elif, так и else являются не обязательными в программе, можно просто использовать if.
age = 17
if age >= 18:
print('Доступ разрешен.')
Правда в таком случае, у нас ничего не выведится на экран, так как результат условия является ложным.
Можно подставлять сразу значения в условие, они автоматически преобразуются в тип bool.
num = 20
if num:
print('В переменной что-то есть')
Вы можете вкладывать неограниченное количество втвлений в сами ветвления.
age = 18
if age >= 18:
print("Больше 17")
if age > 21:
print("Больше 21")
else:
print("От 18 до 21")
Обратите внимания, что else относится к if age > 21, а не к if age >= 18.
С помощью and/or/not мы можем смешивать условия.
age = 18
if not age == 18 or age == 20:
print('Не 18 и не 20 лет')
Тернарный оператор
Достаточно полезная конструкция, которой не стоит пренебрегать, но также не стоит забывать о читабельности кода, поэтому аккуратней с написанием такого выражения.
x = 10 y = 20 res = "x больше" if x > y else "y больше" print(res)
Получаем: y больше.
Теперь разберемся, что здесь происходит: переменная res присваивает значение после занака равно. "x больше" являетс значением, если выполняется условие if x > y, в проивном случае получаем то, что после else. Тернарный операто можно записать по-другому:
переменная = значение if условие else значение
Вот вам небольшая задача на закрепление материала: определить, является ли год високосным. Год является високосным если он кратен 4, но при этом не кратен 100, либо кратен 400. С использованием логических выражений решений реализуется в три строчки.
Свои решение можете присылать мне в личные сообщение, я оценю решение, либо подскажу с чем-либо - @a1f20