Управляющие конструкции Python

PythonBeginner
Практиковаться сейчас

Введение

Управляющий поток (Control flow) — это порядок, в котором выполняются или оцениваются отдельные операторы, инструкции или вызовы функций. Управляющий поток программы на Python регулируется условными операторами, циклами и вызовами функций.

В этой лабораторной работе вы изучите основные концепции управления выполнением программы в Python. Вы исследуете условную логику с использованием операторов if, различные операторы, новый оператор match-case, а также итерацию с использованием циклов while и for. К концу этой лабораторной работы вы сможете писать более динамичные и мощные программы на Python.

Операторы сравнения и логические операторы (Boolean Operators)

На этом шаге вы узнаете, как использовать операторы сравнения и логические операторы для формирования логических выражений. Эти выражения являются основой для управления потоком выполнения, поскольку они возвращают либо True (Истина), либо False (Ложь), что затем определяет дальнейшее выполнение программы.

Операторы сравнения

Операторы сравнения используются для сравнения двух значений. Вот таблица распространенных операторов сравнения:

Оператор Значение
== Равно
!= Не равно
< Меньше чем
> Больше чем
<= Меньше или равно
>= Больше или равно

Эти операторы возвращают True или False. Например, 42 == 42 возвращает True, но 42 == '42' возвращает False, потому что типы (целое число и строка) различаются.

Логические операторы

Существует три логических оператора: and (И), or (ИЛИ) и not (НЕ). Они используются для объединения или инвертирования булевых (логических) значений. Порядок их приоритета: not, затем and, затем or.

Оператор and возвращает True только в том случае, если оба выражения истинны. Оператор or возвращает True, если истинно хотя бы одно из выражений. Оператор not инвертирует булево значение (not True становится False).

Смешивание операторов

Вы можете комбинировать операторы сравнения и логические операторы для создания более сложных логических выражений.

Примечание: Если вы не знакомы с использованием WebIDE (похожего на VS Code), пожалуйста, изучите это в этой лаборатории.

Например:

(4 < 5) and (5 < 6)

Вывод:

True

Теперь давайте попрактикуемся. Откройте файл operators_example.py в проводнике файлов слева. Добавьте следующий код в файл. Этот код объединяет несколько операторов для вычисления единого логического результата.

## operators_example.py
result = 2 + 2 == 4 and not 2 + 2 == 5 and 2 * 2 == 2 + 2
print(result)

Чтобы запустить скрипт, откройте терминал в WebIDE и выполните следующую команду:

python3 operators_example.py

Вы должны увидеть следующий вывод, поскольку выражение вычисляется как True:

True

Операторы if и Тернарный оператор

На этом шаге вы научитесь управлять потоком выполнения программы с помощью операторов if, elif и else для выполнения блоков кода на основе определенных условий. Этот шаг также знакомит с тернарным условным оператором для написания лаконичных однострочных условных выражений.

Операторы if, elif и else

  • Оператор if выполняет блок кода, если его условие истинно (True).
  • Оператор elif (сокращение от "else if") проверяет другое условие, если предыдущие условия if или elif были ложными (False).
  • Оператор else выполняет блок кода, если все предыдущие условия if и elif были ложными (False).

Вот базовая структура:

if condition1:
    ## код для выполнения, если condition1 истинно
elif condition2:
    ## код для выполнения, если condition1 ложно, а condition2 истинно
else:
    ## код для выполнения, если все условия ложны

Тернарный условный оператор

Тернарный оператор предоставляет краткий способ записи простых операторов if-else в одной строке. Его синтаксис:

<expression1> if <condition> else <expression2>

Например, print('kid' if age < 18 else 'adult') — это компактный способ записи полного блока if-else.

Теперь давайте попрактикуемся в использовании полного условного блока. Откройте файл if_example.py и добавьте следующий код. Этот скрипт проверит значение переменной name и выведет соответствующее сообщение.

## if_example.py
name = 'Antony'

if name == 'Debora':
   print('Hi Debora!')
elif name == 'George':
   print('Hi George!')
else:
   print('Who are you?')

Запустите скрипт из терминала:

python3 if_example.py

Поскольку name равно 'Antony', ни условие if, ни условие elif не выполняются, поэтому выполняется блок else.

Вывод:

Who are you?

Оператор Switch Case (Match-Case)

На этом шаге вы изучите структурное сопоставление с образцом (Structural Pattern Matching), мощный эквивалент конструкции switch-case в Python, представленный в Python 3.10. Вы попрактикуетесь в сопоставлении значений, использовании OR-шаблонов и реализации случаев по умолчанию с использованием ключевых слов match и case.

Оператор match принимает выражение и сравнивает его значение с последовательными шаблонами, заданными в одном или нескольких блоках case.

Базовое сопоставление

Вы можете сопоставлять литеральные значения, такие как числа или строки.

OR-шаблоны

Вы можете объединить несколько литеральных шаблонов в одном case, используя оператор | (или). Например, case 200 | 201:.

Случай по умолчанию

Символ подчеркивания (_) является шаблоном-заполнителем (wildcard) и используется для определения случая по умолчанию, который будет соответствовать, если ни один другой случай не совпал.

Давайте попрактикуемся. Откройте файл match_example.py и добавьте следующий код. Этот скрипт использует оператор match для определения действия на основе кода ответа HTTP.

## match_example.py
response_code = 800

match response_code:
    case 200 | 201:
        print("OK")
    case 300 | 307:
        print("Redirect")
    case 400 | 401:
        print("Bad Request")
    case 500 | 502:
        print("Internal Server Error")
    case _:
        print("Invalid Code")

Запустите скрипт из вашего терминала:

python3 match_example.py

Поскольку response_code равно 800, оно не совпадает ни с одним из конкретных случаев, поэтому выполняется случай по умолчанию (_).

Вывод:

Invalid Code

Циклы While и Управление циклами

На этом шаге вы освоите цикл while для повторяющегося выполнения, пока условие истинно. Вы также узнаете, как управлять поведением цикла с помощью оператора break для выхода из цикла и оператора continue для пропуска текущей итерации.

Цикл while

Цикл while многократно выполняет целевое выражение, пока заданное условие истинно (True). Крайне важно обеспечить, чтобы условие в конечном итоге стало ложным (False), чтобы избежать бесконечного цикла.

Оператор break

Оператор break немедленно завершает текущий цикл и возобновляет выполнение со следующего оператора, подобно традиционному break в C.

Оператор continue

Оператор continue отбрасывает все оставшиеся операторы в текущей итерации цикла и возвращает управление в начало цикла.

Давайте создадим простой цикл while. Откройте файл while_example.py и добавьте следующий код. Этот скрипт выведет сообщение пять раз.

## while_example.py
spam = 0
while spam < 5:  ## Продолжать, пока spam меньше 5
    print('Hello, world.')
    spam = spam + 1  ## Увеличиваем счетчик, чтобы избежать бесконечного цикла

Теперь запустите скрипт из терминала:

python3 while_example.py

Цикл будет выполняться до тех пор, пока spam меньше 5. При каждой итерации spam увеличивается на 1.

Вывод:

Hello, world.
Hello, world.
Hello, world.
Hello, world.
Hello, world.

Циклы For и Итерация

На этом шаге вы будете использовать цикл for для итерации по элементам в последовательности, такой как список или строка. Этот шаг охватывает использование функции range() для выполнения цикла определенное количество раз, необязательный блок else в цикле for и то, как полностью завершить программу с помощью sys.exit().

Цикл for

Цикл for используется для итерации по последовательности (которая может быть списком, кортежем, словарем, множеством или строкой).

Функция range()

Функция range() генерирует последовательность чисел, что полезно для выполнения цикла определенное количество раз.

  • range(stop): Генерирует числа от 0 до stop (не включая stop).
  • range(start, stop): Генерирует числа от start до stop.
  • range(start, stop, step): Генерирует числа от start до stop с шагом step.

Завершение программы с помощью sys.exit()

Функция sys.exit() может быть вызвана для немедленного завершения программы. Чтобы использовать ее, вы должны сначала выполнить import sys.

Давайте попрактикуемся в использовании цикла for с range(). Откройте файл for_example.py и добавьте следующий код. Этот скрипт выведет четные числа от 0 до 8.

## for_example.py
## range(start, stop, step)
for i in range(0, 10, 2):
   print(i)

Запустите скрипт из терминала:

python3 for_example.py

Функция range(0, 10, 2) генерирует числа, начиная с 0, до 10 (не включая 10), с шагом 2.

Вывод:

0
2
4
6
8

Резюме

Поздравляем с завершением лабораторной работы! Теперь вы освоили фундаментальные концепции управляющих структур (control flow) в Python.

В этой лабораторной работе вы:

  • Научились использовать операторы сравнения и логические операторы (boolean operators) для формирования логических условий.
  • Практиковались в управлении выполнением программы с помощью операторов if, elif и else, а также лаконичного тернарного оператора.
  • Изучили мощный оператор match-case в Python 3.10 для структурного сопоставления с образцом (structural pattern matching).
  • Научились создавать циклы с помощью while и for и управлять их поведением, используя break и continue.

Используя эти навыки, вы теперь можете писать более сложные и интеллектуальные программы на Python, способные принимать решения и повторять задачи.