Оператор if

Оператор if необходим для того, чтобы выполнять блоки кода при выполнении заданного условия.

Python поддерживает следующие логические условия, необходимые для работы оператора if:

  • Равенство: a == b
  • Неравенство: a != b
  • Меньше чем: a < b
  • Меньше или равно чем: a <= b
  • Больше чем: a > b
  • Больше или равно чем: a >= b

Данные условия могут производить сравнения как между несколькими переменными, так и напрямую с заданными значениями.

Как работает оператор if

Оператор if принимает на вход значение, имеющее тип данных bool (True или False). Если значение внутри оператора равняется True, то блок с кодом внутри оператора if будет выполнен, в противном случае данный блок с кодом будет пропущен.

Например, в переменной сохранено некое число и если оно строго больше нуля, то программа выведет текст, что число положительное. Если число меньше или равно нулю, то программа ничего не выведет:


number = 15
if number > 0:
    print("Условие выполнено")
    print("Число является положительным")

Отступы

Язык Python использует отступы для определения областей действия в коде, поэтому для того, чтобы указать строки кода для выполнения внутри if, необходимо добавлять отступы. Если отступы будут отсутствовать после объявления оператора if, то программа выдаст ошибку.

Пример неправильного кода без отступов, который выдаст ошибку:


a = 33
b = 200
if b > a:
print("b больше чем a") # вы получите ошибку 

Использование переменных

В качестве условий для оператора if возможно использовать переменные, которые имеют тип данных bool.

Пример:


is_logged_in = True
if is_logged_in:
  print("Добро пожаловать!")

Оператор else

Оператор else необходим для того, чтобы выполнить блок кода, если все предыдущие условия, которые шли до него, не были удовлетворены.

Пример:


a = 200
b = 33
if b > a:
  print("b больше чем a")
else:
  print("b не больше чем a")

В данном примере программа выведет текст, который указан в блоке оператора else.

Оператор elif

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

Пример использования elif:


score = 75

if score >= 90:
  print("Оценка: 5")
elif score >= 80:
  print("Оценка: 4")
elif score >= 70:
  print("Оценка: 3")
elif score >= 60:
  print("Оценка: 2")

В данном примере программа выведет текст Оценка: 3, так как только выполнится условие score >= 70. Условие же score >= 60 не будет выполнено, так как одно из предыдущих условий в данной конструкции было удовлетворено.

Использование else вместе с elif

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

Пример:


temperature = 22

if temperature > 30:
  print("На улице жарко!")
elif temperature > 20:
  print("На улице тепло!")
elif temperature > 10:
  print("На улице прохладно!")
else:
  print("На улице холодно!")

Блок кода оператора else будет исполнен, только тогда, когда значение переменной temperature будет строго меньше 10.

Цикл for

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

Пример:


fruits = ["яблоко", "банан", "груша"]
for x in fruits:
  print(x)

Данная программа последовательно пройдёт по всем элементами списка fruits и по очереди выведет их на экран.

Функция range()

Функция range() возвращает последовательность чисел, которые по умолчанию начинается с 0, и каждый элемент по умолчанию увеличивается на 1. Соответственно данную функцию можно использовать для работы с циклом for.

Примеры:


for x in range(6):
  print(x)

Данная программа выведет на экран числа от 0 до 5.


for x in range(2, 6):
  print(x)

Данная программа выведет на экран числа от 2 до 5.

В качестве дополнительного аргумента, функция range() принимает число, на которое будет увеличиваться каждый последующий элемент последовательности.

Пример:


for x in range(2, 30, 3):
  print(x)

Данная программа выведет на экран числа 2 5 8 11 14 17 20 23 26 29.

Оператор break

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

Пример:


fruits = ["яблоко", "банан", "груша"]
for x in fruits:
  if x == "банан":
    break
  print(x)

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

Оператор continue

Оператор continue используется для того, чтобы прервать работу текущей итерации. Если цикл в результате своей работы доходит до данного оператора, то текущая итеарция завершает свою работу, однако последующие итерации продолжатся.

Пример:


fruits = ["яблоко", "банан", "груша"]
for x in fruits:
  if x == "банан":
    continue
  print(x)

В результате работы данной программы, на экран будут выведены яблоко и груша, так как только цикл доходит до элемента банан, то срабатывает оператор continue, который прерывает текущую итерацию и не даёт вывести элемент банан на экран. Однако последующая итерация начинает свою работу и соответственно выводит на экран элемент груша.

Использования оператора else для цикла for

Оператор else возможно использовать для цикла for. Это позволяет запустить блок кода, как только цикл успешно завершит свою работу.

Блок кода внутри else НЕ будет выполнен, если сработал оператор break!

Пример:


for x in range(6):
  print(x)
else:
  print("Цикл успешно завершён!") 

Данная программа выведет на экран числа от 0 до 5, а затем будет выведен текст Цикл успешно завершён!.

Цикл while

Цикл while используется для проведения итераций до тех пор, пока заданное в нём условие является истинным.

Пример:


i = 1
while i < 6:
  print(i)
  i += 1

Данная программа выведет на экран значения переменной i, которая с каждой итерацией будет увеличиваться на 1 до тех пор, пока оно меньше 6. В результате работы данной программы, на экране будут выведены числа от 1 до 5.

Оператор break

Оператор break позволяет прервать работу цикла while, даже когда заданное условие всё ещё является истинным.

Пример:


i = 1
while i < 6:
  print(i)
  if i == 3:
    break
  i += 1 

Данная программа выведет на экран числа от 1 до 3, так как при переменной равной 3, выполняется break.

Оператор continue

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

Пример:


i = 0
while i < 6:
  i += 1
  if i == 3:
    continue
  print(i)

Данная программа выведет на экран числа от 1 до 6, кроме числа 3, так как при переменной равной 3, выполняется continue.

Использования оператора else для цикла while

Оператор else возможно использовать для цикла while. Это позволяет запустить блок кода, только когда условие в цикле перестанет быть истинным и тот завершит свою работу.

Блок кода внутри else НЕ будет выполнен, если сработал оператор break!

Пример:


i = 1
while i < 6:
  print(i)
  i += 1
else:
  print("i более не меньше 6")

Данная программа выведет набор чисел от 1 до 6, а также надпись i более не меньше 6.

Ключевое слово with

Ключевое слово with обёртывает код, используя менеджер контекстов. Оно обеспечивает, что логика установки и очистки (__enter__ / __exit__) будут происходить автоматически, упрощая работу с управлением ресурсов и обработкой исключений.

Данное ключевое слово повышает читаемость кода, так как заменяет громоздкие конструкции, необходимые для реализации данного функционала.

Пример безопасного считывания файла без использования with:


file = open("example.txt", "r")
try:
    content = file.read()
    print(content)
finally:
    file.close()  # Обеспечение закрытия файла

Тот же пример, но с использованием with:


with open("example.txt", "r") as file:
    content = file.read()
    print(content)  # Файл закрывается автоматически

Pattern Matching

Конструкция match позволяет выполнять различные действия на основе различных, заранее предусмотренных, условий.

Пример:


day = 4
match day:
  case 1:
    print("Понедельник")
  case 2:
    print("Вторник")
  case 3:
    print("Среда")
  case 4:
    print("Четверг")
  case 5:
    print("Пятница")
  case 6:
    print("Суббота")
  case 7:
    print("Воскресенье")

Как работает match:

  • Значение внутри match последовательно сравнивается со всеми значения внутри case.
  • Если программа находит совпадение, то выполняется блок кода внутри case, с которым было произошло совпадение.

В случае программы, написанной выше, на экран будет выведена надпись Четверг, так как значение переменной day, которая указана внутри match равняется числу 4.

Значение по умолчанию

Используя символ _ в качестве значения для последнего case, можно создать блок кода, который будет выполняться, когда отстутсвуют совпадения по существующим case.

Пример:


day = 4
match day:
  case 6:
    print("Сегодня Суббота")
  case 7:
    print("Сегодня Воскресенье")
  case _:
    print("Ждём выходные")

Данная программа при значениях переменной day равных 6 и 7, выведет на экран надписи Сегодня Суббота и Сегодня Воскресенье соответственно. При всех остальных значениях данной переменной, программа выведет надпись Ждём выходные.

case _ будет выполняться ВСЕГДА, если программа дойдёт до него, поэтому важно ставить его самым последним, чтобы у него было поведение, как у варианта по умолчанию.

Объединение условий

С помощью символа | можно объединить несколько условий, при которых должен выполняться одинаковый блок с кодом.

Пример:


day = 4
match day:
  case 1 | 2 | 3 | 4 | 5:
    print("Сегодня будний день")
  case 6 | 7:
    print("Сегодня выходной")

Данная программа при значениях переменной day равных промежутку от одного до пяти выведет надпись Сегодня будний день. Если значение данной переменной лежит в промежутке от шести до семи, то программа выведет надпись Сегодня выходной.

Использование if вместе с match

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

Пример:


month = 5
day = 4
match day:
  case 1 | 2 | 3 | 4 | 5 if month == 4:
    print("Рабочий день в Апреле")
  case 1 | 2 | 3 | 4 | 5 if month == 5:
    print("Рабочий день в Мае")
  case _:
    print("Нет совпадений")

Данная программа повзоляет запускать разные блоки кода при одинаковых значениях переменной day в зависимости от значения переменной month. При текущих значениях переменных программа выведет надпись Рабочий день в Мае.