owned this note
owned this note
Published
Linked with GitHub
---
title: Тема 3. Условный оператор
tags: Python Step
type: slide
slideOptions:
allottedMinutes: 80
slideNumber: c
theme: beige
transition: slide
spotlight:
enabled: true
---
## ++Тема 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>
---
## Спасибо за внимание!

(c) Яценко Р.Н., 2019-2020