## ++Тема 3++<br>Условный оператор (c) Яценко Р.Н., 2019-2020 --- ## 1. Синтаксис условного оператора ---- ### Пример 1. Модуль числа ```python x = int(input()) if x > 0: print(x) else: print(-x) ``` ---- <iframe frameborder="0" src="http://pythontutor.com/iframe-embed.html#code=x%20%3D%20int%28input%28%29%29%0Aif%20x%20%3E%200%3A%0A%20%20%20%20print%28x%29%0Aelse%3A%0A%20%20%20%20print%28-x%29&codeDivHeight=400&codeDivWidth=350&cumulative=false&curInstr=0&heapPrimitives=nevernest&origin=opt-frontend.js&py=3&rawInputLstJSON=%5B%5D&textReferences=false" style="width: 100%; height: 50vh; transform: scale(1.2);"> </iframe> ---- ### Синтаксис условной конструкции ```python if Условие: Блок инструкций 1 else: Блок инструкций 2 ``` - *Блок инструкций 1* будет выполнен, если *Условие* истинно - Если *Условие* ложно, будет выполнен *Блок инструкций 2* ---- ### Неполное ветвление - В условной инструкции может отсутствовать слово `else` и последующий блок - Такая инструкция называется неполным ветвлением ```python x = int(input()) if x < 0: x = -x print(x) ``` ---- ### Отступы - Для выделения блока инструкций, относящихся к инструкции `if` или `else` в языке Python используются отступы - Все инструкции, которые относятся к одному блоку, должны иметь равную величину отступа, то есть одинаковое число пробелов в начале строки - Рекомендуется использовать отступ в *4 пробела* и не рекомедуется использовать в качестве отступа символ табуляции ---- ### Пример 2. Пароль Программа ввода и проверки пароля ```python print('Добро пожаловать к нам в ООО "Системы безопасности".') print("-- Безопасность - наше второе имя\n") password = input("Введите пароль: ") if password == "secret": print("Доступ открыт") ``` ---- <iframe frameborder="0" src="http://pythontutor.com/iframe-embed.html#code=print%28'%D0%94%D0%BE%D0%B1%D1%80%D0%BE%20%D0%BF%D0%BE%D0%B6%D0%B0%D0%BB%D0%BE%D0%B2%D0%B0%D1%82%D1%8C%20%D0%BA%20%D0%BD%D0%B0%D0%BC%20%D0%B2%20%D0%9E%D0%9E%D0%9E%20%22%D0%A1%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B%20%D0%B1%D0%B5%D0%B7%D0%BE%D0%BF%D0%B0%D1%81%D0%BD%D0%BE%D1%81%D1%82%D0%B8%22.'%29%0Aprint%28%22--%20%D0%91%D0%B5%D0%B7%D0%BE%D0%BF%D0%B0%D1%81%D0%BD%D0%BE%D1%81%D1%82%D1%8C%20-%20%D0%BD%D0%B0%D1%88%D0%B5%20%D0%B2%D1%82%D0%BE%D1%80%D0%BE%D0%B5%20%D0%B8%D0%BC%D1%8F%5Cn%22%29%0A%0Apassword%20%3D%20input%28%22%D0%92%D0%B2%D0%B5%D0%B4%D0%B8%D1%82%D0%B5%20%D0%BF%D0%B0%D1%80%D0%BE%D0%BB%D1%8C%3A%20%22%29%0A%0Aif%20password%20%3D%3D%20%22secret%22%3A%0A%20%20%20%20print%28%22%D0%94%D0%BE%D1%81%D1%82%D1%83%D0%BF%20%D0%BE%D1%82%D0%BA%D1%80%D1%8B%D1%82%22%29&codeDivHeight=400&codeDivWidth=350&cumulative=false&curInstr=0&heapPrimitives=nevernest&origin=opt-frontend.js&py=3&rawInputLstJSON=%5B%5D&textReferences=false" style="width: 100%; height: 50vh; transform: scale(1.2);"> </iframe> ---- ### Добавим "Доступ закрыт" ```python print('Добро пожаловать к нам в ООО "Системы безопасности".') print("-- Безопасность - наше второе имя\n") password = input("Введите пароль: ") if password == "secret": print("Доступ открыт") else: print("Доступ закрыт") ``` --- ## 2. Вложенные условные инструкции ---- ### Вложенное ветвление - Внутри условных инструкций можно использовать любые инструкции языка Python, в том числе и условную инструкцию - Получаем *вложенное ветвление* -- после одной развилки в ходе исполнения программы появляется другая развилка - Вложенные блоки имеют больший размер отступа (например, 8 пробелов) ---- ### Пример 3 Определить четверть координатной плоскости по заданным координатам точки <img src="https://i.imgur.com/gltlmai.png" width="60%"> ---- ```python x = int(input()) y = int(input()) if x > 0: if y > 0: # x > 0, y > 0 print("Первая четверть") else: # x > 0, y < 0 print("Четвертая четверть") else: if y > 0: # x < 0, y > 0 print("Вторая четверть") else: # x < 0, y < 0 print("Третья четверть") ``` ---- <iframe frameborder="0" src="http://pythontutor.com/iframe-embed.html#code=x%20%3D%20int%28input%28%29%29%0Ay%20%3D%20int%28input%28%29%29%0Aif%20x%20%3E%200%3A%0A%20%20%20%20if%20y%20%3E%200%3A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%23%20x%20%3E%200,%20y%20%3E%200%0A%20%20%20%20%20%20%20%20print%28%22%D0%9F%D0%B5%D1%80%D0%B2%D0%B0%D1%8F%20%D1%87%D0%B5%D1%82%D0%B2%D0%B5%D1%80%D1%82%D1%8C%22%29%0A%20%20%20%20else%3A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%23%20x%20%3E%200,%20y%20%3C%200%0A%20%20%20%20%20%20%20%20print%28%22%D0%A7%D0%B5%D1%82%D0%B2%D0%B5%D1%80%D1%82%D0%B0%D1%8F%20%D1%87%D0%B5%D1%82%D0%B2%D0%B5%D1%80%D1%82%D1%8C%22%29%0Aelse%3A%0A%20%20%20%20if%20y%20%3E%200%3A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%23%20x%20%3C%200,%20y%20%3E%200%0A%20%20%20%20%20%20%20%20print%28%22%D0%92%D1%82%D0%BE%D1%80%D0%B0%D1%8F%20%D1%87%D0%B5%D1%82%D0%B2%D0%B5%D1%80%D1%82%D1%8C%22%29%0A%20%20%20%20else%3A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%23%20x%20%3C%200,%20y%20%3C%200%0A%20%20%20%20%20%20%20%20print%28%22%D0%A2%D1%80%D0%B5%D1%82%D1%8C%D1%8F%20%D1%87%D0%B5%D1%82%D0%B2%D0%B5%D1%80%D1%82%D1%8C%22%29&codeDivHeight=400&codeDivWidth=350&cumulative=false&curInstr=0&heapPrimitives=nevernest&origin=opt-frontend.js&py=3&rawInputLstJSON=%5B%5D&textReferences=false" style="width: 100%; height: 50vh; transform: scale(1.2);"> </iframe> --- ## 3. Операторы сравнения ---- ### Операторы сравнения | Оператор | Описание | |----------|------------------------------------------------------------| | < | Меньше | | > | Больше | | <= | Меньше или равно | | >= | Больше или равно | | == | Равенство | | != | Неравенство | ---- - Условие `(x * x < 1000)` означает `значение x * x меньше 1000`, а условие `(2 * x != y)` означает “*удвоенное значение переменной x не равно значению переменной y*” - Операторы сравнения в Python можно объединять в цепочки (в отличии от большинства других языков программирования, где для этого нужно использовать логические связки), например, \ `a == b == c` или `1 <= x <= 10` --- ## 4. Логические операторы ---- ### Несколько условий - Иногда нужно проверить одновременно не одно, а несколько условий - Проверить, является ли данное число четным можно при помощи условия `(n % 2 == 0)` - Если необходимо проверить, что два данных целых числа n и m являются четными, необходимо проверить справедливость обоих условий: `n % 2 == 0` и `m % 2 == 0`, для чего их необходимо объединить при помощи оператора `and` (логическое И):\ `n % 2 == 0 and m % 2 == 0` ---- ### Стандартные логические операторы - логическое И -- `and` - логическое ИЛИ -- `or` - логическое отрицание -- `not` ---- ### Логическое И (and) Оператор `and` возвращает `True` тогда и только тогда, когда обе его части имеют значение `True` ---- ### Логическое ИЛИ (or) *Логическое ИЛИ* возвращает `True` тогда и только тогда, когда хотя бы одна его часть равна `True` ---- ### Логическое НЕ (not) *Логическое НЕ* (отрицание) имеет вид `not`, после которого следует выражение. *Логическое НЕ* возвращает `True`, если выражение равно `False` и наоборот ---- ### Таблица истинности | X | Y | X and Y | X or Y | not X | | ---- | ---- | --- | --- | ------- | | False | False | False |False | True | | False | True | False | True | True | | True | False | False | True | False | | True | True | True | True | False | ---- ### Пример 4 Проверим, что хотя бы одно из чисел a или b оканчивается на 0 ```python a = int(input()) b = int(input()) if a % 10 == 0 or b % 10 == 0: print('YES') else: print('NO') ``` ---- <iframe frameborder="0" src="http://pythontutor.com/iframe-embed.html#code=a%20%3D%20int%28input%28%29%29%0Ab%20%3D%20int%28input%28%29%29%0Aif%20a%20%25%2010%20%3D%3D%200%20or%20b%20%25%2010%20%3D%3D%200%3A%0A%20%20%20%20print%28'YES'%29%0Aelse%3A%0A%20%20%20%20print%28'NO'%29&codeDivHeight=400&codeDivWidth=350&cumulative=false&curInstr=0&heapPrimitives=nevernest&origin=opt-frontend.js&py=3&rawInputLstJSON=%5B%5D&textReferences=false" style="width: 100%; height: 50vh; transform: scale(1.2);"> </iframe> --- ## 5. Каскадные условные инструкции ---- ### Синтаксис ```python if Условие1: Блок инструкций 1 elif Условие2: Блок инструкций 2 ... elif УсловиеN: Блок инструкций N else: Блок инструкций N + 1 ``` - Условия `if, ..., elif` проверяются по очереди, выполняется блок, соответствующий первому из истинных условий - Если все проверяемые условия ложны, то выполняется блок else, если он присутствует ---- ### Пример 5 Пример программы, определяющий четверть координатной плоскости, можно переписать используя “каскадную“ последовательность операцией `if... elif... else`: ```python x = int(input()) y = int(input()) if x > 0 and y > 0: print("Первая четверть") elif x > 0 and y < 0: print("Четвертая четверть") elif y > 0: print("Вторая четверть") else: print("Третья четверть") ``` ---- <iframe frameborder="0" src="http://pythontutor.com/iframe-embed.html#code=x%20%3D%20int%28input%28%29%29%0Ay%20%3D%20int%28input%28%29%29%0Aif%20x%20%3E%200%20and%20y%20%3E%200%3A%0A%20%20%20%20print%28%22%D0%9F%D0%B5%D1%80%D0%B2%D0%B0%D1%8F%20%D1%87%D0%B5%D1%82%D0%B2%D0%B5%D1%80%D1%82%D1%8C%22%29%0Aelif%20x%20%3E%200%20and%20y%20%3C%200%3A%0A%20%20%20%20print%28%22%D0%A7%D0%B5%D1%82%D0%B2%D0%B5%D1%80%D1%82%D0%B0%D1%8F%20%D1%87%D0%B5%D1%82%D0%B2%D0%B5%D1%80%D1%82%D1%8C%22%29%0Aelif%20y%20%3E%200%3A%0A%20%20%20%20print%28%22%D0%92%D1%82%D0%BE%D1%80%D0%B0%D1%8F%20%D1%87%D0%B5%D1%82%D0%B2%D0%B5%D1%80%D1%82%D1%8C%22%29%0Aelse%3A%0A%20%20%20%20print%28%22%D0%A2%D1%80%D0%B5%D1%82%D1%8C%D1%8F%20%D1%87%D0%B5%D1%82%D0%B2%D0%B5%D1%80%D1%82%D1%8C%22%29&codeDivHeight=400&codeDivWidth=350&cumulative=false&curInstr=0&heapPrimitives=nevernest&origin=opt-frontend.js&py=3&rawInputLstJSON=%5B%5D&textReferences=false" style="width: 100%; height: 50vh; transform: scale(1.2);"> </iframe> --- ## 6. Тернарный условный оператор ---- ### Синтаксис ```python результат_если_истина if условие else результат_если_ложь ``` Тернарные операторы возвращают один из двух возможных результатов в зависимости от того, является ли условие истиной или ложью ---- ### Пример 6 Пример программы, определяющий минимум и максимум из двух чисел: ```python x = 1 y = 2 maximum = x if x>y else y minimum = x if x<y else y print(maximum, minimum) ``` ---- <iframe frameborder="0" src="http://pythontutor.com/iframe-embed.html#code=x%20%3D%201%0Ay%20%3D%202%0Amaximum%20%3D%20x%20if%20x%3Ey%20else%20y%0Aminimum%20%3D%20x%20if%20x%3Cy%20else%20y%0Aprint%28maximum,%20minimum%29&codeDivHeight=400&codeDivWidth=350&cumulative=false&curInstr=0&heapPrimitives=nevernest&origin=opt-frontend.js&py=3&rawInputLstJSON=%5B%5D&textReferences=false" style="width: 100%; height: 50vh; transform: scale(1.2);"> </iframe> --- ## Спасибо за внимание! ![](https://i.imgur.com/gKDsna4.png) (c) Яценко Р.Н., 2019-2020
{"metaMigratedAt":"2023-06-15T13:08:33.303Z","metaMigratedFrom":"YAML","title":"Тема 3. Условный оператор","breaks":false,"slideOptions":"{\"allottedMinutes\":80,\"slideNumber\":\"c\",\"theme\":\"beige\",\"transition\":\"slide\",\"spotlight\":{\"enabled\":true}}","contributors":"[{\"id\":\"93a8c43f-1b5b-4461-9101-89b183ccbc1c\",\"add\":11849,\"del\":497}]"}
    584 views