Условное управление в Python3
Условные операторы Python определяют, какой блок кода выполнять, исходя из результата выполнения (True или False) одного или нескольких выражений.
Процесс выполнения условных операторов можно кратко понять с помощью следующей схемы:
Процесс выполнения кода:

Ключевые слова условных конструкций
| Ключевое слово / Функция | Описание | Пример |
|---|---|---|
if |
Условный оператор, выполняет блок кода, когда условие равно True | if x > 0: |
elif |
Ветвь проверки нескольких условий (else if) | elif x == 0: |
else |
Выполняется, когда ни одно из условий не выполнено | else: |
pass |
Пустой оператор, используемый в качестве заполнителя для обеспечения полноты синтаксиса | if x > 0: pass |
match |
Структурное сопоставление с образцом (Python 3.10+, аналогично switch) | match x: case 1: ... |
Оператор if
Общий вид оператора if в Python выглядит следующим образом:
- Если "condition_1" имеет значение True, будет выполнен блок инструкций "statement_block_1"
- Если "condition_1" имеет значение False, будет вычислено "condition_2"
- Если "condition_2" имеет значение True, будет выполнен блок инструкций "statement_block_2"
- Если "condition_2" имеет значение False, будет выполнен блок инструкций "statement_block_3"
В Python,elifиспользуется вместоelse if, поэтому ключевые слова оператора if:if – elif – else。
Примечание:
- 1. После каждого условия:необходимо ставить двоеточие, указывающее, что далее следует блок инструкций, который должен быть выполнен при выполнении условия.
- 2. Используйте отступы для разделения блоков инструкций. Инструкции с одинаковым числом отступов вместе образуют блок инструкций.
- 3. В Python нет оператораswitch...case, но в версии 3.10 был добавлен операторmatch...caseс похожей функциональностью. Подробнее см. ниже.
Демонстрация GIF:

Пример
Ниже приведён простой пример с if:
Пример
После выполнения вышеуказанного кода вывод будет следующим:
1 - if 表达式条件为 true 100 Good bye!
Из результата видно, что поскольку переменная var2 равна 0, инструкция внутри соответствующего if не была выполнена.
В следующем примере демонстрируется вычисление и определение возраста собаки:
Пример
Сохраните приведённый выше скрипт в файле dog.py и выполните скрипт:
$ python3 dog.py 请输入你家狗狗的年龄: 1 相当于 14 岁的人。 点击 enter 键退出
Ниже приведены часто используемые операторы в if:
| Operator | Описание |
|---|---|
< |
Меньше |
<= |
Меньше или равно |
> |
Больше |
>= |
Больше или равно |
== |
Равно, проверяет, равны ли два значения |
!= |
Не равно |
Пример
Вывод вышеприведённого примера:
False False
Файл high_low.py демонстрирует операции сравнения чисел:
Пример
После выполнения приведённого выше скрипта пример вывода выглядит так:
$ python3 high_low.py 数字猜谜游戏! 请输入你猜的数字:1 猜的数字小了... 请输入你猜的数字:9 猜的数字大了... 请输入你猜的数字:7 恭喜,你猜对了!
Вложенность if
Во вложенных операторах if можно поместить структуру if...elif...else внутрь другой структуры if...elif...else.
if 表达式1:
语句
if 表达式2:
语句
elif 表达式3:
语句
else:
语句
elif 表达式4:
语句
else:
语句
Пример
Сохраните вышеуказанную программу в файл test_if.py. После выполнения вывод будет следующим:
$ python3 test.py 输入一个数字:6 你输入的数字可以整除 2 和 3
match...case
Python 3.10 добавил match...caseусловную конструкцию, так что больше нет необходимости использовать сериюif-elseдля проверки.
Объект после match по очереди сопоставляется с содержимым после case. Если совпадение успешно, выполняется соответствующее выражение; иначе он просто пропускается._Он может сопоставиться с чем угодно.
SVG: блок-схема выполнения match...caseФормат синтаксиса следующий:
match subject:
case <pattern_1>:
<action_1>
case <pattern_2>:
<action_2>
case <pattern_3>:
<action_3>
case _:
<action_wildcard>case _:Похоже наdefault:в C и Java, когда другие case не могут совпасть, этот совпадает, гарантируя, что совпадение всегда будет успешным.
Пример
match status:
case 400:
return "Bad request"
case 404:
return "Not found"
case 418:
return "I'm a teapot"
case _:
return "Что-то не так с интернетом"
print(http_error(400))
print(http_error(404))
print(http_error(418))
print(http_error(500))
Выше приведён пример, который выводит коды состояния HTTP. Результаты вывода для нескольких кодов состояния:
Bad request Not found I'm a teapot Something's wrong with the internet
В одном case также можно задать несколько условий совпадения, разделённых|, например:
...
case 401|403|404:
return "Not allowed"
SVG: | схема сопоставления по нескольким условиям
Пример
match status:
case 200:
return "OK - запрос успешно выполнен"
case 301 | 302:
return "Перенаправление - перенаправление"
case 401 | 403 | 404:
return "Не разрешено - нет прав или не найдено"
case 500 | 502 | 503:
return "Ошибка сервера - ошибка сервера"
case _:
return "Неизвестный статус - неизвестный код состояния"
for code in [200, 301, 403, 500, 418]:
print(f"Код состояния {code}: {check_permission(code)}")
match...caseДля получения дополнительной информации см.:Конструкция match-case в Python
Другие расширения