Conditions: if, then, else — Learn Python 3


  • Theory
  • Steps
  • Problems

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

Рассмотрим следующую задачу: для данного целого X определим ее абсолютное значение. Если X> 0, то программа должна печатать значение X, иначе оно должно печатать -X. Такое поведение невозможно достичь с помощью последовательной программы. Программа должна условно выбрать следующий шаг. Вот где помогают условия:

x = int(input())
if x > 0:
    print(x)
else:
    print(-x)

Эта программа использует условный оператор if . После того if мы положим условие (x > 0) следующее двоеточием. После этого мы помещаем блок инструкций, который будет выполняться только в том случае, если условие истинно (т.е. имеет значение True ).

За этим блоком может следовать слово else , двоеточие и другой блок инструкций, который будет выполняться только в том случае, если условие является ложным (т.е. имеет значение False ). В приведенном выше случае условие ложно, поэтому выполняется блок «else». Каждый блок должен иметь отступы, используя пробелы.

Подводя итог, условный оператор в Python имеет следующий синтаксис:

if condition :
    true-block
    several instructions that are executed
    if the condition evaluates to True
else:
    false-block
    several instructions that are executed
    if the condition evaluates to False

Ключевое слово else с блоком «false» может быть опущено в случае, если ничего не должно быть сделано, если условие ложно. Например, мы можем заменить переменную

x своим абсолютным значением следующим образом:

x = int(input())
if x < 0:
    x = -x
print(x)

В этом примере переменная x назначается -x только если x < 0 . Напротив, команда print(x) выполняется каждый раз, потому что она не имеет отступов, поэтому она не принадлежит блоку «истина».

Отступ является общим способом в Python для разделения блоков кода. Все инструкции в одном и том же блоке должны быть отступом одинаково, т. Е. Они должны иметь одинаковое количество пробелов в начале строки. Для отступов рекомендуется использовать 4 пробела.

Отступ — это то, что делает Python отличным от большинства других языков, в которых фигурные скобки { и } используются для формирования блоков.

Кстати, встроенная функция для абсолютного значения в Python:

x = int(input())
print(abs(x))

Advertising by Google, may be based on your interests

Любая инструкция Python может быть помещена в «истинные» блоки и «ложный» блок, включая другой условный оператор. Таким образом, мы получаем вложенные условия. Блоки внутренних условий имеют отступы, используя в два раза больше пробелов (например, 8 пробелов).

Давайте посмотрим пример. Если заданы координаты точки на плоскости, напечатайте ее квадрант.

x = int(input())
y = int(input())
if x > 0:
    if y > 0:
        # x больше 0, y больше 0
        print("Quadrant I")
    else:    
        # x больше 0, y меньше или равно 0
        print("Quadrant IV")
else:
    if y > 0:
        # x меньше или равно 0, y больше 0
        print("Quadrant II")
    else:    
        # x меньше или равно 0, y меньше или равно 0
        print("Quadrant III")

В этом примере мы используем комментарии: пояснительный текст, который не влияет на выполнение программы. Этот текст начинается с хеша # и длится до конца строки.

Advertising by Google, may be based on your interests

Обычно условие after if имеет один или несколько из следующих операторов:

<
Меньше — условие истинно, если левая сторона меньше правой.
>
большая — условие истинно, если левая сторона больше правой.
<=
меньше или равно.
>=
больше или равно.
==
равны.
!=
не равный.

Например, условие x * x < 1000 означает «значение выражения x * x меньше 1000», а условие 2 * x != y означает «удвоенное значение переменной x не равно значению переменной y «.

Операторы сравнения в Python могут быть сгруппированы следующим образом: a == b == c или x <= y >= 10 . Это редкая вещь среди языков программирования.

Advertising by Google, may be based on your interests

Когда мы суммируем два целых объекта с помощью оператора

+ , например 2 + 5 , мы получаем новый объект: 7 . Точно так же, когда мы сравниваем два целых числа с помощью оператора < , как 2 < 5 , мы получаем новый объект: True .

print(2 < 5)
print(2 > 5)
Объекты True и False имеют специальный тип bool . Поскольку каждое имя типа может использоваться для приведения объектов в этот тип, давайте посмотрим, что этот приведение дает для чисел:

print(bool(-10))    # Правда
print(bool(0))      # False - ноль - единственное ошибочное число
print(bool(10))     # Правда
print(bool(''))     # False - пустая строка является единственной ложной строкой
print(bool('abc'))  # Правда

Иногда вам нужно сразу проверить несколько условий. Например, вы можете проверить, делится ли число n на 2, используя условие n % 2 == 0 ( n дает остаток 0 при делении на 2 ). Если вам нужно проверить, что два числа n и m оба делятся на 2, вы должны проверить как n % 2 == 0 и m % 2 == 0 . Для этого вы присоединяетесь к ним с помощью оператора and

(логическое И): n % 2 == 0 and m % 2 == 0 .

Python имеет логическое И, логическое ИЛИ и отрицание.

Оператор and является двоичным оператором, который оценивает значение True тогда и только тогда, когда и его левая сторона, и правая сторона являются True .

Оператор or является двоичным оператором, который оценивает значение True если хотя бы одна из его сторон имеет значение True .

Оператор not является унарным отрицанием, за ним следует некоторое значение. Он оценивается как

True если это значение False и наоборот.

Давайте проверим, что хотя бы одно из двух чисел заканчивается 0:

a = int(input())
b = int(input())
if a % 10 == 0 or b % 10 == 0:
    print('YES')
else:
    print('NO')

Давайте проверим, что число a положительно, а число b неотрицательно:

if a > 0 and not (b < 0):

Вместо not (b < 0) мы можем написать (b >= 0) .

Advertising by Google, may be based on your interests

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

Давайте покажем, как это работает, переписав пример с точкой (x, y) на плоскости и квадрантами сверху:

x = int(input())
y = int(input())
if x > 0 and y > 0:
    print("Quadrant I")
elif x > 0 and y < 0:
    print("Quadrant IV")
elif y > 0:
    print("Quadrant II")
else:
    print("Quadrant III")

В этом случае условия в if и elif проверяются один за другим, пока не будет найдено первое истинное условие. Затем выполняется только истинный блок для этого условия. Если все условия ложны, блок «else» выполняется, если он присутствует.

Advertising by Google, may be based on your interests

Как работают условия if… elif… else в Python? А что такое True и False?

Python использует логические переменные для оценки условий. Логические значения True и False возвращаются при сравнении или оценке выражения. Например:

x = 2
print(x == 2) # prints out True
print(x == 3) # prints out False
print(x < 3) # prints out True

Обратите внимание, что присвоение переменной выполняется с помощью одного оператора равенства «=», тогда как сравнение между двумя переменными выполняется с помощью оператора двойного равенства «==». Оператор «не равно» помечен как «!=».

Булевы операторы

Логические операторы «and» и «or» позволяют создавать сложные логические выражения, например:

name = "John"
age = 23
if name == "John" and age == 23:
    print("Your name is John, and you are also 23 years old.")

Оператор «in»

Оператор «in» может быть использован для проверки, существует ли указанный объект в итерируемом контейнере объекта, таком как список:

name = "John"
if name in ["John", "Rick"]:
    print("Your name is either John or Rick.")

Python использует отступы для определения блоков кода вместо скобок. Стандартный отступ Python — это 4 пробела, хотя табуляция и любой другой размер пробела будут работать, если они единообразны. Обратите внимание, что кодовые блоки не нуждаются в завершении.

Вот пример использования оператора if в Python с использованием блоков кода:

statement = False
another_statement = True
if statement is true:
    # do something
    pass
elif another_statement is true: # else if
    # do something else
    pass
else:
    # do another thing
    pass

Например:

x = 2
if x == 2:
    print("x equals two!")
else:
    print("x does not equal to two.")

Утверждение оценивается как истинное, если является правильным одно из следующих утверждений: 1. Логическая переменная «True» задается или вычисляется с использованием выражения, такого как арифметическое сравнение. 2. Объект, который не считается «пустым», пропускается.

Вот несколько примеров для объектов, которые рассматриваются как пустые: 1. An empty string: «» 2. An empty list: [] 3. The number zero: 0 4. The false boolean variable: False

Оператор «is»

В отличие от оператора двойного равенства «==», оператор «is» соответствует не значениям переменных, а самим экземплярам. Например:

x = [1,2,3]
y = [1,2,3]
print(x == y) # Prints out True
print(x is y) # Prints out False

Оператор «not»

Использование «not» перед логическим выражением инвертирует его:

print(not False) # Prints out True
print((not False) == (False)) # Prints out False

Упражнение

Измените переменные в первом разделе, чтобы каждый оператор if разрешался как True.

# измени код ниже
number = 10
second_number = 10
first_array = []
second_array = [1,2,3]
if number > 15:
	print("1")
if first_array:
	print("2")
if len(second_array) == 2:
	print("3")
if len(first_array) + len(second_array) == 5:
	print("4")
if first_array and first_array[0] == 1:
	print("5")
if not second_number:
	print("6")

Решение упражнения

# измени код ниже
number = 16
second_number = 0
first_array = [1,2,3]
second_array = [1,2]
if number > 15:
	print("1")
if first_array:
	print("2")
if len(second_array) == 2:
	print("3")
if len(first_array) + len(second_array) == 5:
	print("4")
if first_array and first_array[0] == 1:
	print("5")
if not second_number:
	print("6")

Использование операторов If и связанных условий в Python 3 | Linode Docs

Программы Python должны иметь возможность запускать разные ветви кода в разных ситуациях. Обычно это достигается за счет использования условных операторов , которые определяют поток управления через программу. Оператор Python if используется, чтобы решить, должен ли выполняться какой-либо код. В этом руководстве объясняется оператор if и другие условные операторы Python, а также демонстрируется, как их использовать.

Условные операторы — это программные структуры, которые могут принимать решения. Без условных операторов и других управляющих операторов программа выполнялась бы детерминированным образом, каждый раз один оператор за другим. Условные операторы позволяют различным входным данным напрямую влиять на поведение программы. Они позволяют программистам создавать более сложные, мощные и полезные программы и необходимы для информатики.

Каждый день люди принимают условные решения. Если идет дождь, они берут зонт. Если это рабочий день, они встают рано. В противном случае они спят. Условные операторы работают точно так же в вычислениях. Условный оператор оценивает Логическое выражение и вычисляет, является ли оно истинным или ложным. Этот результат влияет на ход программы. Если выражение истинно, программа выполняет определенный блок кода. При необходимости он может выполнить другой блок, когда условие ложно.

Примечание В Python официальные ключевые слова True и False представляют два логических значения истинности.

Условный оператор обычно следует за форматом , если затем . если 9Компонент 0008 сочетается с условным выражением и блоком кода. Если условие истинно, программа запускает код внутри блока. Этот кодовый блок иногда называют разделом . Если условие ложно, блок не выполняется. Иногда условное выражение имеет формат if-then-else . Ветка else содержит блок кода, который запускается только тогда, когда условие ложно.

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

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

В псевдокоде структура условного оператора if then соответствует следующему шаблону:

 if (логическое выражение) then
    пункт
конец, если
 

Условное выражение if then может быть расширено с помощью опции else для формирования оператора if then else . С компонентом else не связано условное выражение. Программа принимает все решения, когда вычисляет выражение , если .

 если (логическое выражение) тогда
    пункт
еще
    пункт
конец, если
 

Прежде чем начать

  1. Если вы еще этого не сделали, создайте учетную запись Linode и вычислительный экземпляр. См. наши руководства «Начало работы с Linode» и «Создание вычислительного экземпляра».

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

  3. Убедитесь, что Python правильно установлен на Linode, и вы можете запускать и использовать среду программирования Python. Чтобы запустить Python в Ubuntu, используйте команду python3 . Информацию о том, как использовать Python, см. в нашем руководстве «Как установить Python 3 в Ubuntu 20.04».

Примечание Действия в этом руководстве написаны для пользователей без полномочий root. Команды, требующие повышенных привилегий, имеют префикс sudo . Если вы не знакомы с командой sudo , см. руководство «Пользователи и группы Linux».

Условные выражения Python

Чтобы реализовать условные выражения в Python, используйте оператор if . Оператор Python if принимает различные формы. Его можно комбинировать с оператором elif , что означает «иначе, если», или с оператором 9.0007 иначе вариант . В следующих разделах объясняется, как лучше всего использовать оператор Python if в различных обстоятельствах.

Оператор If Python

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

  1. Ключевое слово , если начинает условный оператор.
  2. Условное выражение, результатом которого является логическое значение True или False . При желании выражение может быть заключено в скобки.
  3. Символ : отмечает конец строки и конец заголовка инструкции if .

Набор следует за заголовком. Он содержит одну или несколько строк кода для выполнения и должен иметь отступ. Этот раздел с отступом также известен как кодовый блок или условный пункт . Длина этого блока не ограничена, он заканчивается следующей строкой без отступа. В соответствии с рекомендациями по стилю Python PEP 8 для отступа следует использовать четыре пробела.

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

Условное выражение может быть довольно сложным. Обычно используются операторы сравнения, включая оператор равенства == и оператор «больше чем» > . Но выражение может включать логические логические операторы, такие как и , или и , а не . Это также может быть возвращаемое значение функции. Допускается любое выражение, результатом которого является логическое значение True или False .

Простой Python , если оператор выглядит так:

, если логическое_выражение:
    команда
 

Когда интерпретатор Python встречает ключевое слово if , он оценивает boolean_expression . Если результат равен True , Python запускает команду .

Python if Пример

Примеры в этом разделе демонстрируют, как использовать команду Python if . Значение температуры изначально установлено на 75 . Внутри оператора if Python анализирует логическое выражение Temperature > 65 и решает, что это True . Поскольку выражение равно True , Python выполняет блок кода, состоящий из двух операторов print . Если блоку кода требуется больше инструкций, они также будут иметь отступ.

Файл: if_temp1.py
 1
2
3
4
5
6
 
 температура = 75
print("Температура: ", температура)
если температура > 65:
    print("Хороший день.")
    print("Вы должны выйти на улицу.")
print("Конец программы") 
 python3 if_temp1.py
 
 Температура: 75
Это хороший день.
Вы должны выйти на улицу.
Конец программы 

Второй пример иллюстрирует, что происходит, когда условие равно False . Значение temperature теперь равно только 55 , поэтому условное выражение оценивается как False . Условный оператор не выполняется, кодовый блок не выполняется, и заявление о хорошем дне не печатается. Поток управления переходит непосредственно к последней строке программы, которая печатает Конец программы .

Файл: if_temp2.py
 1
2
3
4
5
 
 температура = 55
print("Температура: ", температура)
если температура > 65:
    print("Хороший день.")
print("Конец программы") 
 python3 if_temp2.py
 
 Температура: 55
Конец программы 
Python «если нет» Пример

Бывают случаи, когда блок кода должен выполняться только в том случае, если условие не выполняется. Для этого поставьте перед условным выражением цифру 9.Ключевое слово 0007, а не , и заключите выражение в скобки.

Python вычисляет все выражение, включая оператор , а не , чтобы определить истинное значение. Сначала он анализирует выражение внутри скобок. Затем он передает результат оператору , а не . Этот оператор вычисляет результат True или False , который является окончательным результатом условного выражения. Последующий блок кода выполняется только в том случае, если условие выполняется.

В этом примере условие , если не , истинно, только если офицер не установлен на детектив . Сравнение офицер == "Детектив" равно False . не(офицер == "Детектив") , следовательно, True . Python запускает блок кода и печатает строку детектива здесь нет .

Файл: ifnot1.py
 1
2
3
4
 
 офицер = "Констебль"
если нет(офицер == "Детектив"):
    print("Детектива здесь нет.")
print("Конец программы") 
 python3 ifnot1.py
 
 Детектива здесь нет.
Конец программы 

В этом случае офицер устанавливается на детектив . офицер == "Детектив" это Правда и не(офицер == "Детектив") это Ложь . Python не запускает блок кода, и печатается Конец программы .

Файл: ifnot2.py
 1
2
3
4
 
 офицер = "Детектив"
если нет(офицер == "Детектив"):
    print("Детектива здесь нет.")
print("Конец программы") 
 python3 ifnot2.py
 
 Конец программы 
Python «и» Пример

Условное выражение можно превратить в сложное составное выражение, включающее несколько операторов и предложений. Это позволяет принимать более сложные решения. Кодовый блок , если выполняется только в том случае, если выполняются два, три или даже больше условий.

В этом примере блок кода, связанный с оператором if , выполняется только в том случае, если оба условия истинны. Программа использует логические выражения и для проверки того, что оба выражения равны True . Скобки используются для предварительного расчета обоих входов для оператора и . Строка Сегодня хороший день, а детектива здесь нет. печатается только тогда, когда выполняются оба условия. Если одно из условий равно False , строка не печатается.

Файл: if_and.py
 1
2
3
4
5
 
 температура = 75
офицер = "Констебль"
если (температура > 65) и (не(офицер == "Детектив")):
    print("Хороший день, а детектива здесь нет.")
print("Конец программы") 
 python3 if_and.py
 
 Сегодня хороший день, а детектива здесь нет.
Конец программы 

Python If Else Оператор

The Python 9Оператор 0007 if else позволяет программе выбирать один из двух путей кода. Он добавляет блок кода else , который запускается только тогда, когда условие равно False . В операторе if else выполняется либо кодовый блок if , либо кодовый блок else , но не оба одновременно. Невозможно иметь случай, когда ни один блок не запускается. В каждом разделе должен быть хотя бы один оператор в блоке отступа.

Технически еще 9Директива 0008 не является условным оператором. Решение о том, какой блок кода запускать, принимается в операторе if .

Оператор if else в Python имеет следующую структуру:

 if boolean_expression:
    команда_1
еще:
    команда_2
 

Интерпретатор Python оценивает логическое_выражение , связанное с оператором if . Если это True , выполняется command_1 , но не выполняется command_2 . В противном случае он сразу переходит к кодовому блоку else и выполняет command_2 .

В следующем примере исходный файл if_temp2.py изменяется, чтобы добавить условие else . Если значение температуры удовлетворяет условному предложению, выполняется кодовый блок if . Однако, если температура падает слишком низко, условное выражение становится False . В этом случае печатается альтернативное утверждение о более холодной погоде. В этом примере температура это всего лишь 55 . Условный оператор температура > 65 не выполняется, поэтому поток управления переходит к блоку else . Python печатает строку «Погода слишком холодная». 2 3 4 5 6 7

 температура = 55
print("Температура: ", температура)
если температура > 65:
    print("Хороший день.")
еще:
    print("Слишком холодно")
print("Конец программы") 
 python3 ifelse_temp.py
 
 Температура: 55
Погода слишком холодная
Конец программы 

Цепочки условий Python с использованием elif

Оператор Python elif означает «иначе, если». Он используется для оценки нескольких выражений и выбора одного из нескольких различных путей кода. Он всегда используется в сочетании с оператором if и иногда упоминается как связанный условный оператор 9.0004 .

Сначала Python оценивает условие if . Если условное выражение if равно False , Python проверяет каждое условное выражение elif в последовательном порядке, пока одно из них не оценит значение True . Затем он запускает соответствующий блок кода elif . Если все условные операторы elif равны False , Python не запускает ни один из кодовых блоков elif .

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

Оператор Python if elif следует этому шаблону. Последняя директива else и блок кода являются необязательными.

, если логическое_выражение:
    команда_1
Элиф логическое_выражение2:
    команда_2
Элиф логическое_выражение3:
    команда_3
еще:
    команда_4
 

Файл ifelse_temp.py из предыдущего раздела можно изменить, включив в него оператор elif . Это позволяет более эффективно обрабатывать средние температуры, которые не являются ни теплыми, ни холодными. Значение температуры , превышающее 65 , удовлетворяет условию if и остается «хорошим». Тем не менее, температура между 50 и 64 теперь считается «нормальной». Значение в этом диапазоне не соответствует , если условное, но проходит условное elif . Обозначение «холодный» зарезервировано для температур 50 или ниже. «Холодные» температуры ниже 50 оцениваются как False как в условных предложениях if , так и в elif . Обработка проваливается до блока кода или . Добавление дополнительных условий позволяет программе более точно представлять данные.

В первом примере температура из 55 не проходит первую условную проверку, поскольку меньше 65 . Однако, будучи больше, чем 50 , он удовлетворяет условному выражению elif . Поэтому печатается строка Это хороший день .

Файл: ifelif_temp.py
 1
2
3
4
5
6
7
8
9
 
 температура = 55
print("Температура: ", температура)
если температура > 65:
    print("Хороший день. ")
Элиф температура > 50:
    print("Хороший день.")
еще:
    print("Слишком холодно")
print("Конец программы") 
 python3 ifelif_temp.py
 
 Температура: 55
Это нормальный день.
Конец программы 

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

Файл: ifelif2_temp.py
 1
2
3
4
5
6
7
8
9
 
 температура = 40
print("Температура: ", температура)
если температура > 65:
    print("Хороший день.")
Элиф температура > 50:
    print("Хороший день.")
еще:
    print("Слишком холодно")
print("Конец программы") 
 python3 ifelif2_temp. py
 
 Температура: 40
Погода слишком холодная
Конец программы 
Примечание Python недавно представил соответствует оператору . Эта управляющая структура сравнивает выражение со списком шаблонов, используя блоков case . В некоторых случаях оператор match может быть более подходящим, чем оператор elif . Дополнительные сведения см. в документации по потоку управления Python .

«Вложенные операторы if» связаны, но различны. Во вложенном операторе if любой из блоков кода if , elif или else также может содержать код 9.0007, если оператор . Хотя эту структуру сложнее написать и понять, применяются те же принципы. Старайтесь избегать использования глубоко вложенных управляющих структур, потому что код может стать трудным для чтения и отладки. Если имеется более двух вложенных операторов if , рассмотрите возможность перезаписи кода с использованием функций или составных условий.

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

Python реализует условные операторы, используя оператор if . Оператор Python if сначала определяет, является ли его условное выражение True или нет. Если результат равен True , выполняется соответствующий блок кода. Если результат False , ничего не происходит. Оператор Python if else по-прежнему выполняет кодовый блок if , если условие имеет значение True , но выполняет блок кода else , когда условие равно 9.0007 Ложь . Один из более необязательных операторов elif , означающий «иначе, если», может следовать за оператором if , чтобы разрешить различные пути кода на основе множественных сравнений. Дополнительные сведения о структурах управления Python см. в официальной документации Python.

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

  • Документация по потоку управления Python
  • Руководство по стилю PEP 8

Как использовать операторы IF в Python (if, else, elif и т. д.) — Dataquest

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

  • Если завтра не будет дождя, я пойду с друзьями в парк. В противном случае я останусь дома с чашкой горячего чая и буду смотреть телевизор.
  • Если завтра не будет жарко, то поеду на море, а если будет, то погуляю в лесу. Однако, если пойдет дождь, я останусь дома.

Вы поняли. Давайте посмотрим, как условия работают в компьютерах. Возможно, вы уже знаете, что программы на Python выполняются построчно. Однако иногда нам нужно пропустить какой-то код и выполнить только его часть только при соблюдении определенных условий. Здесь могут пригодиться управляющие структуры. Условные операторы в Python построены на этих управляющих структурах. Они будут направлять компьютер в выполнении программы.

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

Basic

if Оператор

В Python операторы if являются отправной точкой для реализации условия. Рассмотрим простейший пример:

, если <условие>:
    <выражение> 

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

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

Давайте рассмотрим конкретный пример.

 # Базовый оператор if
х = 3
у = 10
если х < у:
    print("x меньше y.") 
 x меньше y. 

Прежде всего, мы определяем две переменные, x и y . Тогда мы говорим, что если переменная x меньше, чем переменная y , выведите x меньше, чем y ). Действительно, если мы выполним этот код, мы выведем этот вывод, потому что 3 меньше 10.

Вывод: x меньше y.

Рассмотрим более сложный пример.

 # Чуть более сложный пример
х = 3
у = 10
г = Нет
если х < у:
    г = 13
print(f"Переменная z теперь {z}. ") 
 Переменная z теперь равна 13. 

В этом случае, если условие выполнено, то переменной z будет присвоено значение 13. Тогда Переменная z теперь равна 13. Будет напечатано (обратите внимание, что оператор print может использоваться как вне, так и внутри оператора if ).

Как видите, мы не ограничены в выборе выражения для выполнения. Теперь вы можете больше практиковаться, написав более сложный код.

Давайте посмотрим, что произойдет, если мы выполним следующий код:

 # Что здесь происходит?
х = 3
у = 10
если х > у:
    print("x больше y.") 

Здесь мы изменили направление символа сравнения (было меньше , а теперь больше ). Можете ли вы угадать выход?

Выхода не будет! Это произошло потому, что условие не было выполнено. 3 не больше 10, поэтому условие оценивается как False , и выражение не выполняется. Как решить эту проблему? С иначе заявление.

else Оператор

Что делать, если мы хотим выполнить какой-то код, если условие не выполняется? Мы добавляем оператор else под оператором if . Давайте посмотрим на пример.

 # еще оператор
х = 3
у = 10
если х > у:
    print("x больше y.")
еще:
    print("x меньше y.") 
 x меньше y. 

Вывод: x меньше y.

Здесь Python сначала выполняет условие if и проверяет, равно ли оно Правда . Поскольку 3 не больше 10, условие не выполняется, поэтому мы не печатаем «x больше, чем y». Тогда мы говорим, что во всех остальных случаях мы должны выполнять код под оператором else: x меньше y.

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

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

Здесь оператор else означает «иначе».

Что произойдет, если условие будет выполнено?

 # Что делать, если условие выполнено?
х = 3
у = 10
если х < у:
    print("x меньше y. ")
еще:
    print("x больше y.") 
 x меньше y. 

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

Вывод: x меньше y.

Что, если x равно y ?

 # х равно у
х = 3
у = 3
если х < у:
    print("x меньше y.")
еще:
    print("x больше y." 
 x больше y. 

Вывод явно неверный, потому что 3 равно 3! У нас есть еще одно условие за пределами символов сравнения больше или меньше; таким образом, мы должны использовать оператор elif .

elif Оператор

Давайте перепишем приведенный выше пример и добавим оператор elif .

 # x равно y с оператором elif
х = 3
у = 3
если х < у:
    print("x меньше y.")
Элиф х == у:
    print("х равно у."
еще:
    print("x больше y." 
 х равно у. 

Вывод: x равно y .

Сначала Python проверяет, выполняется ли условие x < y . Это не так, поэтому мы переходим ко второму условию, которое в Python мы пишем как elif , что является сокращением от else if . Если первое условие не выполняется, проверьте второе условие, и если оно выполнено, выполните выражение. В противном случае сделайте что-нибудь еще. Вывод: «x равно y».

Теперь вернемся к одному из наших первых примеров условных операторов:

Если завтра не будет жарко, я поеду на море, а если будет, то погуляю в лесу. Однако, если пойдет дождь, я останусь дома.

Здесь наше первое условие, чтобы завтра не было слишком жарко ( если утверждение). Если это условие не выполняется, то идем гулять в лес ( elif инструкция). Наконец, если ни одно из условий не будет выполнено, мы останемся дома (оператор else ).

Теперь давайте переведем это предложение на Python.

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

 # элитное состояние
завтра = "тепло"
если завтра == "тепло":
    print("Я пойду к морю.")
Элиф завтра == "очень жарко":
    print("Я пойду в лес. ")
еще:
    print("Я останусь дома.") 
 Я пойду к морю. 

Python сначала проверяет, равна ли переменная завтра «теплой», и если да, то выводит Я пойду к морю. и останавливает выполнение. Что произойдет, если первое условие не будет выполнено?

 # Завтра очень жарко
завтра = "очень жарко"
если завтра == "тепло":
    print("Я пойду к морю.")
Элиф завтра == "очень жарко":
    print("Я пойду в лес.")
еще:
    print("Я останусь дома.") 
 Я пойду в лес. 

В этом случае Python оценивает первое условие как False и переходит ко второму условию. Это условие True , поэтому выводит Я пойду в лес. и останавливает выполнение.

Если ни одно из двух условий не выполнено, то будет напечатано Я останусь дома.

Конечно, вы можете использовать любое количество операторов elif , какое захотите. Давайте добавим дополнительные условия, а также изменим вывод else на Погода не распознана. (например, если завтра «f», мы не знаем, что это значит).

 # Несколько условий elif
завтра = "снежно"
если завтра == "тепло":
    print("Я пойду к морю.")
Элиф завтра == "очень жарко":
    print("Я пойду в лес.")
Элиф завтра == "снежно":
    print("Я слеплю снеговика.")
Элиф завтра == "дождливо":
    print("Я останусь дома.")
еще:
    print("Погода не распознана") 
 Я слеплю снеговика. 

Угадайте, что напечатано?

Множественные условия

Теперь добавим сложности. Что, если мы хотим соответствуют нескольким условиям в одном выражении if ?

Допустим, мы хотим предсказать биом (например, пустыню или тропический лес) на основе двух климатических измерений: температуры и влажности. Например, если жарко и сухо, то это жаркая пустыня, а если холодно и сухо, то это арктическая пустыня. Вы можете видеть, что мы не можем классифицировать эти два биома только на основе их влажности (оба они сухие), поэтому мы также должны добавить меру температуры.

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

Посмотрите на код ниже.

 # Предсказание биома с логическим оператором и
влажность = «низкая»
температура = "высокая"
если влажность == "низкая" и температура == "высокая":
    print("Горячая пустыня.")
elif влажность == "низкая" и температура == "низкая":
    print("Это арктическая пустыня.")
elif влажность == "высокая" и температура == "высокая":
    print("Это тропический лес.")
еще:
    print("Я не знаю!") 
 Жаркая пустыня. 

Результат будет Жаркая пустыня. , потому что только при низкой влажности и высокой температуре комбинированное состояние равно True . Недостаточно, чтобы только одно из условий было True .

Формально Python проверяет, является ли первое условие влажности True (действительно), затем проверяет, является ли второе условие температуры True (и оно есть) и только в этом случае комбинированное условие Правда . Если хотя бы одно из этих условий не выполняется, то комбинированное условие оценивается как False .

Что, если мы хотим, чтобы одно из двух (или более) условий было выполнено? В этом случае мы должны использовать логический оператор или .

Давайте рассмотрим пример. Допустим, у вас есть список чисел от 1 до 14 (включительно), и вы хотите извлечь все числа, которые меньше 3 или больше или равны 10. Вы можете добиться результата, используя оператор или !

 # или логический оператор
числа = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
nums_less_3_greater_equal_10 = []
для числа в цифрах:
    если число < 3 или число >= 10:
        nums_less_3_greater_equal_10.append(число)
print(nums_less_3_greater_equal_10) 
 [1, 2, 10, 11, 12, 13, 14] 

Вывод: [1, 2, 10, 11, 12, 13, 14]

Здесь Python проверяет, является ли текущий число в цикле for меньше 3, и если это True , то в сумме , если оператор оценивается как True . То же самое происходит, если текущее число больше или равно 10. Если комбинированный оператор if равен True , то выражение выполняется, и текущее число добавляется в список nums_less_3_greater_equal_10 .

Ради эксперимента заменим или на и .

 # Изменить или на и
числа = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
nums_less_3_greater_equal_10 = []
для числа в цифрах:
    если число < 3 и число >= 10:
        nums_less_3_greater_equal_10.append(число)
печать (nums_less_3_greater_equal_10) 
 [] 

Вывод: []

В этом случае текущее число должно быть одновременно меньше 3 и больше или равно 10, что явно невозможно, поэтому комбинированный оператор if оценивается как False и выражение не выполняется.

Чтобы еще больше прояснить ситуацию, посмотрите на этот оператор print .

 print(False or True) 
 True 

Вывод: True

Здесь Python оценивает комбинацию False и True , и поскольку у нас есть логический оператор или , достаточно, чтобы хотя бы одно из этих логических значений было True , чтобы оценить комбинированный оператор как True .

Что произойдет, если мы заменим или на и ?

 print(False и True) 
 False 

Вывод: False

Оба логических значения должны быть True для оценки комбинированного условия до Правда . Так как одно из них False , комбинированное условие также False . Вот что происходит в примере с числами.

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

Мы будем использовать оператор % , чтобы выяснить, является ли число четным. Выражение число % другое_число даст остаток от деления числа на другое_число . Если мы хотим выяснить, является ли число четным, то остаток от деления этого числа на 2 должен быть равен 0.

 # Более сложные логические операторы
числа = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
nums_less_3_greater_equal_10_multiple_2 = []
для числа в цифрах:
    если (число < 3 или число >= 10) и число % 2 == 0:
        nums_less_3_greater_equal_10_multiple_2.append(число)
печать (nums_less_3_greater_equal_10_multiple_2) 
 [2, 10, 12, 14] 

Вывод: [2, 10, 12, 14]

Почему первое число вывода 2? Во втором цикле for 2 оценивается в первом условии в скобках. Оно меньше 3, поэтому объединенное условие в скобках равно True . 2 также делится на 2 с остатком 0, поэтому второе условие также True . Оба условия равны True , поэтому этот номер добавляется к списку.

Почему мы используем скобки? Это из-за приоритет оператора в Python. А если мы их удалим?

 # Более сложные логические операторы без круглых скобок
числа = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
nums_less_3_greater_equal_10_multiple_2 = []
для числа в цифрах:
    если число < 3 или число >= 10 и число % 2 == 0:
        nums_less_3_greater_equal_10_multiple_2. append(число)
print(nums_less_3_greater_equal_10_multiple_2) 
 [1, 2, 10, 12, 14] 

Вывод: [1, 2, 10, 12, 14]

У нас есть 1 в списке! В Python все операторы оцениваются в точном порядке. Например, операторы и имеют приоритет над операторами или . Но если мы поместим оператор или в круглые скобки, он будет иметь приоритет над операторами и .

Сначала мы оцениваем условия с обеих сторон оператора и (имеет приоритет). 1 не больше 10 и не дает 0 при делении на 2, поэтому комбинированное условие равно Ложь . У нас осталось условие , если num < 3 или False . 1 меньше 3, поэтому первое условие True . Условие становится True или False . У нас есть оператор или , поэтому комбинированное условие оценивается как True , и к списку добавляется 1. Практикуйтесь, проверяя, что происходит с другими числами.

Наконец, взгляните на эту таблицу истинности , чтобы понять, как работают логические операторы. Здесь мы опишем только 9Логические операторы 0007 и и или , но в Python у нас также есть оператор , а не . Мы приглашаем вас узнать больше об этом и попрактиковаться в использовании в операторах if .

Вход А Вход Б И ИЛИ
Ложь Ложь Ложь Ложь
Правда Ложь Ложь Правда
Ложь Правда Ложь Правда
Правда Правда Правда Правда

У нас есть два входа, A и B, которые могут быть либо True , либо False . Например, во второй строке A равно True , а B равно False ; таким образом, A И B оцениваются как False , но A OR B оцениваются как Правда . Аналогично читается остальная часть таблицы. Потратьте минуту, чтобы понять, что он вам говорит.

Вложенные

операторы if

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

 # Вложенные операторы if
отметка = 85
если отметка >= 60 и отметка <= 100:
    если отметка >= 90:
        print("Ты лучший!")
    Элиф Марк >= 80:
        print("Молодец!")
    Элиф Марк >= 70:
        print("Вы можете сделать лучше.")
    еще:
        распечатать("Пройдено")
Элиф Марк > 100:
    print("Эта отметка слишком высока.")
Элиф Марк <0:
    print("Эта отметка слишком низкая.")
еще:
    печать("Ошибка") 
 Молодец! 

Вывод: Молодец!

Здесь, если метка находится между 60 и 100, выполняется выражение под оператором , если . Но тогда у нас есть другие условия, которые также оцениваются. Итак, наша отметка — 85, что находится между 60 и 100. Однако 85 меньше 90, поэтому первое вложенное условие if равно False , а первое вложенное выражение не выполняется. Но 85 выше 80, поэтому выполняется второе выражение и «Молодец!» распечатывается.

Конечно, у нас также есть операторов elif вне выражения ниже первого оператора if . Например, какой , если оценка выше 100? Если первое условие (число от 60 до 100) равно False , то мы переходим непосредственно к оператору elif mark > 100 и распечатываем Эта метка слишком низкая. .

Попробуйте присвоить разные числа переменной mark , чтобы понять логику этого кода.

Сопоставление с образцом в Python 3.10

Сопоставление с образцом было добавлено в Python 3.10, выпущенном в октябре 2021 года. Короче говоря, можно увидеть другой синтаксис для операторов if. .elif . Давайте рассмотрим пример, переписав предыдущий пример с использованием сопоставления с образцом.

 # Предыдущий пример
завтра = "снежно"
если завтра == "тепло":
    print("Я пойду к морю.")
Элиф завтра == "очень жарко":
    print("Я пойду в лес.")
Элиф завтра == "снежно":
    print("Я слеплю снеговика.")
Элиф завтра == "дождливо":
    print("Я останусь дома.")
еще:
    print("Погода не распознана") 
 Я слеплю снеговика. 
 # Сопоставление с образцом с синтаксисом match..case
завтра = "снежно"
матч завтра:
    чехол "теплый":
        print("Я пойду к морю.")
    случай "очень горячий":
        print("Я пойду в лес.")
    чехол "снежный":
        print("Я слеплю снеговика.")
    случай "дождливый":
         print("Я останусь дома.")
    случай _:
        print("Погода не распознана") 
 Я слеплю снеговика. 

Мы можем видеть сходство между использованием if..elif 9Операторы 0008 и синтаксис соответствуют синтаксису case . Во-первых, мы определяем, какую переменную мы хотим, чтобы соответствовало , и когда мы определяем случаи (или значения, которые может принимать эта переменная). Остальной код аналогичен. Если совпадает случай (эквивалент двойного знака равенства), то выполняется выражение print .

Обратите внимание на последний оператор case , это случай _ , который эквивалентен else : если ни один случай не соответствует, то мы печать Погода не распознана .

pass Statement

Когда вы начнете писать более сложный код, вы можете оказаться в ситуации, когда вам придется использовать заполнитель вместо кода, который вы хотите реализовать позже. Оператор pass является этим заполнителем. Давайте рассмотрим пример с оператором pass и без него.

 # Без пропуска
число = 3
если число == 3:
print("Я напишу этот код позже. ") 9IndentationError: ожидается блок с отступом 

Python ожидает некоторый код в операторе if , но вы еще не реализовали его! Вы можете написать туда pass и решить эту проблему.

 # С пропуском
число = 3
если число == 3:
    проходить
print("Я напишу этот код позже.") 
 Я напишу этот код позже. 

Вывод: Я напишу этот код позже.

Если вместо этого вы поместите pass в оператор if , Python не выдаст никакой ошибки и перейдет к любому коду, который у вас ниже , если оператор . Это работает, даже если у вас есть другие условия ниже первого оператора if .

 # С пропуском
число = 4
если число == 3:
    проходить
Элиф число == 4:
    print("Переменная num равна 4.")
еще:
    print("Переменная num не равна ни 3, ни 4.") 
 Переменная num равна 4. 

Вывод: Переменная num равна 4.

Выводы

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