Что такое полный вариант инструкции if


Содержание

  • 1. Для чего используется инструкция if (оператор if)
  • 2. Какие формы (разновидности) имеет инструкция if в Python?
  • 3. Полная форма инструкции if (if-elif-else). Принцип выполнения
  • 4. Сокращенная форма if. Принцип выполнения
  • 5. Сокращенная форма if-else. Принцип выполнения
  • 6. Сокращенная форма if-elif. Принцип выполнения
  • 7. Пример, который демонстрирует использование конструкции if-elif-else (полная форма)
  • 8. Пример решения квадратного уравнения с использованием инструкции if в интерактивном режиме
  • 9. Пример решения квадратного уравнения с использованием инструкции if в программном режиме
  • 10. Пример использования инструкции if-elif. Определение количества дней в месяце и наличия высокосного года
  • 11. Пример использования вложенной инструкции if-elif. Модифицированный вариант программы определения количества дней в месяце с учетом высокосного года
  • 12. Пример, который демонстрирует использование сокращенной конструкции if. Поиск максимального значения между тремя величинами
  • Связанные темы

Поиск на других ресурсах:

1. Для чего используется инструкция if (оператор if)

Часто, при реализации алгоритмов, нужно выполнять выбор хода выполнения программы в зависимости от заданного условия. Для обеспечения этого современные языки программирования (Java, Java Script, C#, C++ и прочие) содержат соответствующие управляющие операторы (control statements), одним из которых есть оператор ветвления if. Язык программирования Python также имеет в своем арсенале инструкцию if, работа которой ничем не отличается от такой же инструкции других языков программирования.

Инструкцию if еще называют оператором if (statement if).

 

2. Какие формы (разновидности) имеет инструкция if в Python?

В языке Python инструкция if имеет следующие четыре формы:

  • полная форма if-elif-else;
  • сокращенная форма if;
  • сокращенная форма if-else;
  • сокращенная форма if-elif.

 

3. Полная форма инструкции if (if-elif-else). Принцип выполнения

В языке программирования Python общая форма инструкции if имеет вид:

if выражение1 : набор1
elif выражение2 : набор2
...
elif выражениеN : наборN
else:
    наборN+1

где выражение1, выражение2, выражениеN – соответствующее условное выражение, которое проверяется на истинность. Если условное выражение истинно, то его значение равно True (истина). В этом случае выполняется соответствующий набор (множество) операторов набор1, набор2, наборN, наборN+1.

Инструкция if работает следующим образом. Если выражение1 равно True, то выполняется набор1 операторов, в противном случае происходит переход к проверке условия выражение2. По такому же принципу обрабатываются ветви выражение2, …, выражениеN. Если ни одно из выражений выражение1, выражение2, …, выражениеN не выполняется (равно False), то выполняется наборN+1, который следует после ключевого слова else.

 

4. Сокращенная форма if. Принцип выполнения

Сокращенная форма инструкции if не содержит блоков elif и else и имеет следующий вид

if выражение : набор

В этом случае набор операторов выполняется если выражение истинно, то есть равно True. В противном случае, выполняется следующий после if оператор.

 

5. Сокращенная форма if-else. Принцип выполнения

Сокращенная форма может иметь общий вид if-else

if выражение : набор1
else: набор2

Приведенная выше форма оператора if работает по следующему принципу. Сначала проверяется значение выражение. Если выражение истинно (равно True), то выполняется набор1 операторов. В противном случае (выражение равно False) выполняется набор2 операторов.

 

6. Сокращенная форма if-elif. Принцип выполнения

Сокращенная форма if-elif может иметь следующий вид

if выражение1 : набор1
elif выражение2 : набор2
...
elif выражениеN : наборN

В этой форме оператор if подобен оператору switch в других языках программирования. Оператор if-elif работает по следующему принципу. Если значение выражение1 истинно (равное True), то выполняется набор1 и происходит выход из оператора if-elif. В противном случае (значение выражение1 равно False) происходит переход к следующей ветви оператора на проверку выражение2. Таким образом, выполняется та ветвь оператора if-elif, значение выражения в которой равно True. Если ни одно из выражений выражение1, выражение2, …, выражениеN не выполняется, тогда происходит переход к следующему после if-elif оператору.



 

7. Пример, который демонстрирует использование конструкции if-elif-else (полная форма)

Задано целочисленное значение n=1..3 и радиус r. По заданному значению n вычислить:

  • 1 — длина окружности;
  • 2 — площадь круга;
  • 3 — объем шара.

Текст программы в программном режиме имеет следующий вид

n=2 # ввод данных
r=5.5
pi=3.1415
# вычисление, оператор if
if n==1:
    s=2*pi*r
    print("Длина окружности = ",s)
elif n==2:
    s=pi*r*r
    print("Площадь круга = ",s)
elif n==3:
    s=4.0/3*pi*r*r*r
    print("Объем шара = ",s)
else:
    print("Неверно введены данные")
print("----------------------")

В результате выполнения вышеприведенного кода будет получен следующий результат

Площадь круга = 95.03037499999999
----------------------

 

8. Пример решения квадратного уравнения с использованием инструкции if в интерактивном режиме

Ниже приведен пример решения квадратного уравнения для заданных коэффициентов a, b, c. В примере демонстрируется сокращенная форма оператора if.

>>> a = 8 # задать начальные значения a,b,c
>>> b = 3
>>> c = -2
>>> d = b*b-4*a*c # вычислить дискриминант
>>> if d>=0:
    x1=(-b-(d**0.5))/(2*a)
    x2=(-b+(d**0.5))/(2*a)
>>> x1,x2
(-0.7215002340823456, 0.34650023408234565)
>>>

С помощью нижеследующего кода можно проверить значения дискриминанта d и правильность полученного результата

>>> d
73
>>> a*x1*x1+b*x1+c
0.0
>>> a*x2*x2+b*x2+c
-4.440892098500626e-16
>>>

Как видно из результата, значение x1, x2 приближено к нулю, то есть решение верно.

 

9. Пример решения квадратного уравнения с использованием инструкции if в программном режиме

В примере демонстрируется использование оператора if для нахождения решения квадратного уравнения. Код приведен для программного режима. С помощью функции print() выводится результат вычислений и результат проверки. Если значение дискриминанта d<0, то выводится сообщение «Уравнение не имеет корней».

a=2 # задать значение a,b,c
b=5
c=-4
d=b*b-4*a*c # вычислить d
if d>=0: # оператор if
    x1=(-b-(d**0.5))/(2*a)
    x2=(-b+(d**0.5))/(2*a)
    print("d = ",d) # вывод результата
    print("x1 = ", x1)
    print("x2 = ", x2)
    print
    print("Проверка:")
    print("a*x1*x1+b*x1+c = ", a*x1*x1+b*x1+c)
    print("a*x2*x2+b*x2+c = ", a*x2*x2+b*x2+c)
else:
    print("уравнение не имеет решения")

Как видно из примера, если в инструкции if нужно выполнить несколько операторов подряд (сгруппировать), то они выделяются с помощью отступов.

После запуска на выполнение, в среде Python будет получен следующий результат:

d = 57
x1 = -3.1374586088176875
x2 = 0.6374586088176875
Проверка:
a*x1*x1+b*x1+c = 0.0
a*x2*x2+b*x2+c = 0.0

 

10. Пример использования инструкции if-elif. Определение количества дней в месяце и наличия высокосного года

Задан год и месяц. Разработать программу, которая определяет:

  • является ли заданный год высокосным;
  • количество дней в заданном месяце данного года. В программе произвести расчет высокосного года.

Текст программы следующий

year=2100 # установить некоторый год
month=2 # установить некоторый месяц
#
# определение высокосного года
f_leap_year=True # в начале принять, что год высокосный
if year%400==0:
    print("год высокосный")
elif year%100==0:
    print("год невысокосный")
    f_leap_year=False
elif year%4==0:
    print("год высокосный")
else:
    print("год невысокосный")
    f_leap_year=False
print("---------------------")
#
# определение количества дней в месяце
print("Количество дней в месяце:")
nDays=31 # в начале количество дней равно 31
if (month==2)and(f_leap_year==True): nDays=29
elif (month==2)and(f_leap_year==False): nDays=28
elif (month==4)or(month==6)or(month==9)or(month==11):
    nDays=30
print(nDays)

В вышеприведенном коде дополнительно использованы логические операции and (логическое «и») и or (логическое «или»).

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

год невысокосный
---------------------
Количество дней в месяце:
28
>>>

 

11. Пример использования вложенной инструкции if-elif. Модифицированный вариант программы определения количества дней в месяце с учетом высокосного года

В данном примере демонстрируется использование вложенной инструкции if-elif для проведения расчета количества дней в месяце на основе следующих входных данных:

  • год;
  • номер месяца в году.

Важно вычислить, есть ли заданный год высокосным.

Текст программы следующий:

year=2108 # установить некоторый год
month=2 # установить некоторый месяц
#
# определение высокосного года
f_leap_year=True # в начале принять, что год высокосный
if year%400==0:
    print(year,"- год высокосный")
elif year%100==0:
    print(year,"- год невысокосный")
    f_leap_year=False
elif year%4==0:
    print(year,"- год высокосный")
else:
    print(year,"- год невысокосный")
    f_leap_year=False
print("---------------------")
#
# определение количества дней в месяце
if month==2:
    if f_leap_year==True: # вложенный оператор if-else
        nDays=29
    else:
        nDays=28
elif (month==4)or(month==6)or(month==9)or(month==11):
    nDays=30
else:
    nDays=31
print("Количество дней в месяце:", month)
print("nDays=", nDays)

При определении количества дней для месяца 2 (февраль), используется вложенная инструкция if-else. Вложенность определяется с помощью отступов

...
if month==2:
    if f_leap_year==True: # вложенный оператор if-else
        nDays=29
    else:
        nDays=28
elif ...

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

2108 - год високосный
---------------------
Количество дней в месяце: 2
nDays= 29
>>>

 

12. Пример, который демонстрирует использование сокращенной конструкции if. Поиск максимального значения между тремя величинами

В примере демонстрируется использование сокращенной инструкции if для поиска максимального значения между тремя величинами a, b, c. Текст программы следующий:

# поиск максимума между величинами a, b, c
# установить произвольные значения
a,b,c=20,30,17
# поиск максимума mx
mx=a;
if mx<b:
    mx=b
if mx<c:
    mx=c
print("Max = ", mx)

После запуска на выполнение будет получен следующий результат

Max =   30
>>>

 


Связанные темы

  • Оператор присваивания. Формы присваивания. Примеры. Позиционное присваивание кортежей, списков
  • Оператор while. Примеры
  • Оператор forПримеры

 


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

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

Альтернатива.

Действие или обход.

24.1.Полная и сокращенная формы инструкции if

Рассматриваемая инструкция применяется в двух формах:

Полной

Сокращенной

Вполной форме инструкция if .. else моделирует стандартную управляющую структуру, которая называется альтернатива, а в сокращенной форме – стандартную управляющую структуру действие или обход.

Рассматриваемая инструкция имеет следующий формат: if(выр)

инструкция1

[else

инструкция2 ]

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

Зарезервированные слова if и else.

Внутренние инструкции инструкция1 и инструкция2.

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

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

осокращенной форме. В полной форме необязательная часть присутствует, а в сокращенной – нет.

Полная форма инструкции if позволяет организовать разветвление на два направления. Первое направление (true – ветвь разветвления) представлено единственной инструкцией языка Си инструкция1, а второе направление (false — ветвь) – единственной инструкцией инструкция2.

Логика работы полной инструкции if такова. В зависимости от значения, которое имеет выражение выр (true или false) будет выполняться либо внутренняя инструкция инструкция1, либо внутренняя инструкция инструкция2. Внутренняя инструкция инструкция1 выполняется только в том случае, когда значение выражения выр равно true, в противном случае будет выполняться внутренняя инструкция инструкция2. Нетрудно видеть,

46

что логика работы полной инструкции if соответствует стандартной управляющей конструкции “альтернатива”.

В сокращенной форме инструкции if имеется только одна внутренняя инструкция (инструкция1). Работа такой формы инструкции if отличается от работы полной формы инструкции if только для случая, когда значение выражения выр равно false. В этом случае при использовании сокращенной формы инструкции if не выполняется ни каких действий. Можно сказать, что в этом случае имеет место обход действия, предусмотренного единственной инструкцией инструкция1.

Приведем примеры использования инструкции if.

Пример 1. Даны два числа a и b. Необходимо найти значение наибольшего из этих чисел.

/*

В коде, приведенном ниже a, b max – переменные типа double. Переменные a и b содержат исходные данные, а переменная max – ожидаемый результат

*/

if(a > b) max = a;

else

max = b;

/* Вызов функции printf()расположен в линейной части и выполняется сразу после завершения работы инструкции if */

printf(“Максимальное значение = %0.3f”, max);

/*

Конец фрагмента программного кода */

В качестве примера применения сокращенной формы рассматриваемой

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

Пример 2. Даны три числа a, b и c. Необходимо найти значение наибольшего из чисел.

Решение. Предположим вначале, что имеется только два числа. Пусть это будут числа a и b. Такая задача уже решена. Ее решение приведено выше. Теперь эту задачу следует решать повторно, сравнивая уже значения переменных с и max. Оказывается, что такое сравнение можно выполнить с помощью сокращенной формы инструкции if. Ниже приведен программный код, содержащий решение рассматриваемой задачи.

/*

В коде, приведенном ниже, a, b, с и max – переменные типа double.Переменные a, b и c содержат исходные данные, а переменная max – ожидаемый результат

*/

if(a > b) else max = a;

max = b; if(c > max)

max = c;

47

Соседние файлы в папке 1сем Дагаев

  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #

Общий формат инструкции if

Как и в большинстве других языков программирования в Python присутствует условная инструкция
if, которая в общем случае имеет следующий формат записи:

 if <Условие №1>:
    <Блок инструкций №1>
 elif <Условие №2>:
    <Блок инструкций №2>
 ...
 else:
    <Запасной блок инструкций>

Если первое условие истинно (результатом вычислений будет True), то выполняется первый блок инструкций. Если первое условие ложно
(результатом вычислений будет False), то проверяются по-очереди все условия необязательных блоков elif и, если найдется
истинное условие, то выполняется соответствующий этому условию блок инструкций. Если все дополнительные условия окажутся ложными, выполнится запасной блок инструкций
else. Обязательным является только блок инструкций if, остальные блоки могут быть опущены. При этом разрешается
использовать любое количество блоков elif, но только один блок else.

Простейшая форма инструкции if

Давайте для наглядности начнем с простейшей условной инструкции. Она содержит только основную часть if, в которой вычисляется значение единственного
условного выражения и по результатам вычисления принимается решение – если конечный результат имеет значение True, интерпретатор выполняет указанный
фрагмент кода, а если конечный результат имеет значение False, интерпретатор пропускает данный фрагмент кода и начинает выполнять инструкцию, следующую за
текущей условной инструкцией (см. пример №1).

Код
Результат
pythonCodes

# Определяем польз. функцию.
def my_div(x, y):
      
    # Осуществляем проверку условного выражения.
    if y == 0:
        # Выходим из функции и возвращаем None.
        return None       
    
    # Возвращаем частное.
    return x/y 
    
# Вызываем функцию и публикуем результаты.
print(my_div(2, 4))        
print(my_div(2, 0))
0.5
None












Пример №1. Условная инструкция if и ее синтаксис.

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

Управляющая конструкция if/else

Если в зависимости от результата проверки условного выражения нужно сделать выбор и выполнить только один из двух допустимых наборов инструкций, инструкция if
может быть расширена при помощи ключевого слова else, которое в случае, когда значение условия равно False, позволяет
выполнить альтернативный набор инструкций (см. пример №2).

Код
Результат
pythonCodes

# Определяем польз. функцию.
def my_func(x, y):
      
    # Проверим равенство чисел.
    if x == y:
        print(x, 'равно', y, end='\n\n')
    else:
        print(x, 'не равно', y,)
    
# Вызываем функцию.
my_func(1.34, 1.43)        
my_func(3, 3.0)
1.34 не равно 1.43
3 равно 3










Пример №2. Расширение инструкции if за счет ключевого слова else.

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

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

Когда требуется выполнить выбор не из двух, а из нескольких подходящих вариантов, инструкция if может быть расширена при помощи требуемого количества
ключевых слов elif, которые по сути служат для объединения двух соседних инструкций if
(см. пример №3).

Код
Результат
pythonCodes

# Определяем польз. функцию.
def my_price(f):
    
    # Осуществляем проверку условных выражений.
    if f == 'яблоки':
        m = '1.9 руб/кг.'                 
    elif f == 'апельсины':
        m = '3.4 руб/кг.'            
    elif f == 'бананы':
        m = '2.5 руб/кг.'            
    elif f == 'груши':
        m = '2.8 руб/кг.'            
    else:    
        m = 'Нет в продаже!'
    
    # Возвращаем результат.
    return m                
             
# Вызываем функцию и публикуем результаты.
print(my_price('апельсины'))        
print(my_price('груши'))        		
print(my_price('мандарины'))
3.4 руб/кг.
2.8 руб/кг.
Нет в продаже!



















Пример №3. Расширение инструкции if за счет ключевых слов elif.

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

Здесь будет уместным заметить, что в Python отсутствует инструкция switch, которая может быть вам знакома по
другим языкам программирования (например, PHP). Ее роль берет на себя конструкция if/elif/else, а также ряд
дополнительных приемов программирования, иммитирующих поведение этой инструкции.

Трехместное выражение if/else

Как и в случае с инструкцией присваивания, использовать условные инструкции в выражениях запрещается. Но иногда ситуации бывают настолько простые, что использование многострочных
условных инструкций становится нецелесообразным. Именно по этим причинам в Python была введена специальная конструкция, называемая
трехместным выражением if/else или тернарным оператором if/else, которая может использоваться непосредственно в
выражениях (см. пример №4).

Код
Результат
pythonCodes

# Инициализируем переменную.
x = 5
       
# Составляем условие.
if x == 0:
    s = False
else:
    s = True
             
# Выводим результат.
print(s)        

# Используем выражение if/else.        
s = True if x != 0 else False
# Получим тот же результат.
print(s)
True
True














Пример №4. Использование трехместного выражения if/else (часть 1).

Таким образом, трехместное выражение if/else дает тот же результат, что и предыдущая четырехстрочная инструкция if,
но выглядит выражение проще. В общем виде его можно представить как A = Y if X else Z. Здесь, как и в предыдущей инструкции, интерпретатор обрабатывает
выражение Y, только если условие X имеет истинное значение, а выражение Z обрабатывается,
только если условие X имеет ложное значение. То есть вычисления здесь также выполняются по сокращенной схеме (см. пример №5).

Код
Результат
pythonCodes

# Инициализируем переменные.
x, y = 0, 3
       
res = True if x > y else False
# Выведет False.
print(res)        
             
res = y/x if x != 0 else 'Division by zero!'
# Выведет 'Division by zero!'.
print(res)         
             
res = True if 'a' in 'abc' else False
# Выведет True.
print(res)
False
Division by zero!
True











Пример №5. Использование трехместного выражения if/else (часть 2).

Рассмотренные нами примеры достаточно просты, поэтому получившиеся трехместные выражения легко поместились в одну строку. В более сложных случаях, когда выражения получаются громоздкими и
читабельность кода падает, лучше не мудрить, а использовать полноценную условную инструкцию if/else.

Краткие итоги параграфа

  • Условная инструкция if/elif/else дает нам возможность изменить ход программы за счет выполнения только одного определенного блока инструкций,
    соответствующего первому попавшемуся ключевому слову с истинным условием. Обязательным является только ключевое слово if, остальные ключевые слова
    конструкции могут быть опущены. При этом разрешается использовать любое количество ключевых слов elif, но только одно ключевое слово
    else.
  • Так как в Python использовать инструкции непосредственно в выражениях не разрешается, для проверки условий в них было введено специальное трехместное
    выражение if/else. Его еще называют тернарным оператором if/else. В общем виде конструкцию можно представить как
    A = Y if X else Z. Вычисления здесь выполняются по сокращенной схеме: интерпретатор обрабатывает выражение Y, только
    если условие X истинно, а выражение Z обрабатывается, только если условие X ложно.

Помогите проекту, подпишитесь!

Подписка на учебные материалы сайта оформляется сроком на один год и стоит около
5 у.е.
После подписки вам станут доступны следующие возможности.

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

Python для начинающих
На страницу подписки

Вопросы и задания для самоконтроля

1. Какие из частей условной инструкции if/elif/else не являются обязательными?
Показать решение.

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

2. Как в языке Python можно оформить множественное ветвление?
Показать решение.

Ответ. Прямым способом оформления множественного ветвления следует считать использование инструкции if с
несколькими блоками elif, т.к. в Python отсутствует инструкция switch, которая
присутствует в некоторых других языках программирования (например, PHP).

3. Какой из представленных форматов соответствует условной инструкции: if/elseif/else,
if/elif/else, A = Y if X else Z?
Показать решение.

Ответ. if/elif/else.

4. Исправьте в коде три ошибки.
Показать решение.

Условие
pythonCodes

a = 3547
b = 155
        
if a/b > 25
    print('a/b > 25')           
else if a/b > 15:
    print('a/b > 15')        
else:
    print('a/b <= 15'

Условие
Решение
pythonCodes

a = 3547
b = 155
        
if a/b > 25
    print('a/b > 25')           
else if a/b > 15:
    print('a/b > 15')        
else:
    print('a/b <= 15'
	
	
	
a = 3547
b = 155
        
# Не забываем про двоеточие.
if a/b > 25:
    print('a/b > 25')           
# Правильно elif.
elif a/b > 15:
    print('a/b > 15')        
else:
    # А где закрывающая скобка?
    print('a/b <= 15')

5. Дополнительные тесты по теме расположены в разделе
«Условная инструкция if/elif/else»
нашего сборника тестов.

6. Дополнительные упражнения и задачи по теме расположены в разделе
«Условная инструкция if/elif/else»
нашего сборника задач и упражнений.

Быстрый переход к другим страницам

Как и в большинстве других языков программирования в Python присутствует условная инструкция
if, которая в общем случае имеет следующий формат записи:

 if <Условие №1>:
    <Блок инструкций №1>
 elif <Условие №2>:
    <Блок инструкций №2>
 ...
 else:
    <Запасной блок инструкций>

Если первое условие истинно (результатом вычислений будет True), то выполняется первый блок инструкций. Если первое условие ложно
(результатом вычислений будет False), то проверяются по-очереди все условия необязательных блоков elif и, если найдется
истинное условие, то выполняется соответствующий этому условию блок инструкций. Если все дополнительные условия окажутся ложными, выполнится запасной блок инструкций
else. Обязательным является только блок инструкций if, остальные блоки могут быть опущены. При этом разрешается
использовать любое количество блоков elif, но только один блок else.

Простейшая форма инструкции if

Давайте для наглядности начнем с простейшей условной инструкции. Она содержит только основную часть if, в которой вычисляется значение единственного
условного выражения и по результатам вычисления принимается решение – если конечный результат имеет значение True, интерпретатор выполняет указанный
фрагмент кода, а если конечный результат имеет значение False, интерпретатор пропускает данный фрагмент кода и начинает выполнять инструкцию, следующую за
текущей условной инструкцией (см. пример №1).

# Определяем польз. функцию.
def my_div(x, y):
      
    # Осуществляем проверку условного выражения.
    if y == 0:
        # Выходим из функции и возвращаем None.
        return None       
    
    # Возвращаем частное.
    return x/y 
    
# Вызываем функцию и публикуем результаты.
print(my_div(2, 4))        
print(my_div(2, 0))
0.5
None












Пример №1. Условная инструкция if и ее синтаксис.

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

Управляющая конструкция if/else

Если в зависимости от результата проверки условного выражения нужно сделать выбор и выполнить только один из двух допустимых наборов инструкций, инструкция if
может быть расширена при помощи ключевого слова else, которое в случае, когда значение условия равно False, позволяет
выполнить альтернативный набор инструкций (см. пример №2).

# Определяем польз. функцию.
def my_func(x, y):
      
    # Проверим равенство чисел.
    if x == y:
        print(x, 'равно', y, end='nn')
    else:
        print(x, 'не равно', y,)
    
# Вызываем функцию.
my_func(1.34, 1.43)        
my_func(3, 3.0)
1.34 не равно 1.43
3 равно 3










Пример №2. Расширение инструкции if за счет ключевого слова else.

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

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

Когда требуется выполнить выбор не из двух, а из нескольких подходящих вариантов, инструкция if может быть расширена при помощи требуемого количества
ключевых слов elif, которые по сути служат для объединения двух соседних инструкций if
(см. пример №3).

# Определяем польз. функцию.
def my_price(f):
    
    # Осуществляем проверку условных выражений.
    if f == 'яблоки':
        m = '1.9 руб/кг.'                 
    elif f == 'апельсины':
        m = '3.4 руб/кг.'            
    elif f == 'бананы':
        m = '2.5 руб/кг.'            
    elif f == 'груши':
        m = '2.8 руб/кг.'            
    else:    
        m = 'Нет в продаже!'
    
    # Возвращаем результат.
    return m                
             
# Вызываем функцию и публикуем результаты.
print(my_price('апельсины'))        
print(my_price('груши'))        		
print(my_price('мандарины'))
3.4 руб/кг.
2.8 руб/кг.
Нет в продаже!



















Пример №3. Расширение инструкции if за счет ключевых слов elif.

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

Здесь будет уместным заметить, что в Python отсутствует инструкция switch, которая может быть вам знакома по
другим языкам программирования (например, PHP). Ее роль берет на себя конструкция if/elif/else, а также ряд
дополнительных приемов программирования, иммитирующих поведение этой инструкции.

Трехместное выражение if/else

Как и в случае с инструкцией присваивания, использовать условные инструкции в выражениях запрещается. Но иногда ситуации бывают настолько простые, что использование многострочных
условных инструкций становится нецелесообразным. Именно по этим причинам в Python была введена специальная конструкция, называемая
трехместным выражением if/else или тернарным оператором if/else, которая может использоваться непосредственно в
выражениях (см. пример №4).

# Инициализируем переменную.
x = 5
       
# Составляем условие.
if x == 0:
    s = False
else:
    s = True
             
# Выводим результат.
print(s)        

# Используем выражение if/else.        
s = True if x != 0 else False
# Получим тот же результат.
print(s)
True
True














Пример №4. Использование трехместного выражения if/else (часть 1).

Таким образом, трехместное выражение if/else дает тот же результат, что и предыдущая четырехстрочная инструкция if,
но выглядит выражение проще. В общем виде его можно представить как A = Y if X else Z. Здесь, как и в предыдущей инструкции, интерпретатор обрабатывает
выражение Y, только если условие X имеет истинное значение, а выражение Z обрабатывается,
только если условие X имеет ложное значение. То есть вычисления здесь также выполняются по сокращенной схеме (см. пример №5).

# Инициализируем переменные.
x, y = 0, 3
       
res = True if x > y else False
# Выведет False.
print(res)        
             
res = y/x if x != 0 else 'Division by zero!'
# Выведет 'Division by zero!'.
print(res)         
             
res = True if 'a' in 'abc' else False
# Выведет True.
print(res)
False
Division by zero!
True











Пример №5. Использование трехместного выражения if/else (часть 2).

Рассмотренные нами примеры достаточно просты, поэтому получившиеся трехместные выражения легко поместились в одну строку. В более сложных случаях, когда выражения получаются громоздкими и
читабельность кода падает, лучше не мудрить, а использовать полноценную условную инструкцию if/else.

Краткие итоги параграфа

  • Условная инструкция if/elif/else дает нам возможность изменить ход программы за счет выполнения только одного определенного блока инструкций,
    соответствующего первому попавшемуся ключевому слову с истинным условием. Обязательным является только ключевое слово if, остальные ключевые слова
    конструкции могут быть опущены. При этом разрешается использовать любое количество ключевых слов elif, но только одно ключевое слово
    else.
  • Так как в Python использовать инструкции непосредственно в выражениях не разрешается, для проверки условий в них было введено специальное трехместное
    выражение if/else. Его еще называют тернарным оператором if/else. В общем виде конструкцию можно представить как
    A = Y if X else Z. Вычисления здесь выполняются по сокращенной схеме: интерпретатор обрабатывает выражение Y, только
    если условие X истинно, а выражение Z обрабатывается, только если условие X ложно.

Вопросы и задания для самоконтроля

1. Какие из частей условной инструкции if/elif/else не являются обязательными?

Показать решение.

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

2. Как в языке Python можно оформить множественное ветвление?

Показать решение.

Ответ. Прямым способом оформления множественного ветвления следует считать использование инструкции if с
несколькими блоками elif, т.к. в Python отсутствует инструкция switch, которая
присутствует в некоторых других языках программирования (например, PHP).

3. Какой из представленных форматов соответствует условной инструкции: if/elseif/else,
if/elif/else, A = Y if X else Z?

Показать решение.

Ответ. if/elif/else.

4. Исправьте в коде три ошибки.

Показать решение.

a = 3547
b = 155
        
if a/b > 25
    print('a/b > 25')           
else if a/b > 15:
    print('a/b > 15')        
else:
    print('a/b <= 15'
a = 3547
b = 155
        
if a/b > 25
    print('a/b > 25')           
else if a/b > 15:
    print('a/b > 15')        
else:
    print('a/b <= 15'
	
	
	
a = 3547
b = 155
        
# Не забываем про двоеточие.
if a/b > 25:
    print('a/b > 25')           
# Правильно elif.
elif a/b > 15:
    print('a/b > 15')        
else:
    # А где закрывающая скобка?
    print('a/b <= 15')

5. Дополнительные упражнения и задачи по теме расположены в разделе
«Алгоритмы ветвления»
нашего сборника задач и упражнений по языку программирования Python.

Быстрый переход к другим страницам

Содержание:развернуть

  • Как работает if else
  • Синтаксис

  • Отступы

  • Примеры

  • Оператор elif
  • Заглушка pass
  • if else в одну строку
  • Вложенные условия
  • Конструкция switch case

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

Говоря простыми словами, конструкция if else в Python указывает интерпретатору, следует ли выполнять определенный участок кода или нет.

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

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

Синтаксис

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

# самый простой пример, где есть всего одно условие
a = 1
if a == 1:
print("It is true")


> It is true

Синтаксически конструкция выглядит следующим образом:

  1. сначала записывается часть if с условным выражением, которое возвращает истину или ложь;
  2. затем может следовать одна или несколько необязательных частей elif (в других языках вы могли встречать else if);
  3. Завершается же запись этого составного оператора также необязательной частью else.
Принцип работы оператора выбора в Python
count = 1
# условное выражение может быть сколь угодно сложным,
# и может быть сколь угодно много elif-частей
if True and count == 1 and count == 2:
print("if")
elif count == 'count':
print("First elif")
elif count == 14.2:
print("Second elif")
elif count == 1:
print("Nth elif")
else:
print("Else")

> Nth elif

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

b = 10
if b == 10:
# любое количество инструкций
print(b)
b = b * 15
b = b - 43
b = b ** 0.5
print(b)
elif b == 20:
print("You will not see me")
else:
print("And me")


> 10
> 10.344080432788601

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

Отступы

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

# начало кода
# код
# код
# код
# начало первого отступа
# первый отступ
# первый отступ
# начало второго отступа
# второй отступ
# второй отступ
# конец второго отступа
# конец первого отступа

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

var_a = 5
var_b = 10
var_c = 20
if var_c**2 > var_a * var_b:
# блок №1
if var_c < 100:
# блок №2
if var_c > 10:
# блок №3
var_a = var_a * var_b * var_c
# блок №2
var_b = var_a + var_c
# блок №1
var_c = var_a - var_b
print(var_a)
print(var_b)
print(var_c)


> 1000
> 1020
> -20

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

Подробнее о табуляции и отступах в Python:

Примеры

Рассмотрим несколько практических примеров использования условного оператора.

Пример №1: создание ежедневного бэкапа (например базы данных):

from datetime import datetime

def daily_backup(last_backup_date):
"""
Передаем дату последнего бэкапа.
Если прошло больше 1 дня, создаем бэкап
"""
if not last_backup_date:
print(f"creating first backup [{datetime.now().date()}] ..")
return

delta = datetime.now() - last_backup_date
if delta.days > 0:
print(f"creating backup [{datetime.now().date()}] ..")
else:
print(f"backup on [{datetime.now().date()}] already exists")

daily_backup("")
> creating first backup [2020-08-15] ..

daily_backup(datetime(2020, 8, 14))
> creating backup [2020-08-15] ..

daily_backup(datetime(2020, 8, 15))
> backup on [2020-08-15] already exists

Пример №2: Проверка доступа пользователя к системе. В данном примере if проверяет наличие элемента в списке:

BLACK_LIST = ['192.34.12.3', '192.34.12.5', '192.34.10.23']
USERS = ['rolli34', 'constantinpetrovv', 'kate901']

def access_available(user_name, ip):
if user_name in USERS:
if ip not in BLACK_LIST:
return True
else:
print(f"write to log: user {user_name} [ip: {ip}] in block list")
else:
print(f"write to log: user {user_name} [ip: {ip}] does not exists")
return False

if access_available("rolli34", "192.34.12.111"):
print(f"Hello!!")
> Hello!!

if access_available("rolli34", "192.34.10.23"):
print(f"Hello!!")
> write to log: user rolli34 [ip: 192.34.10.23] in block list

if access_available("devnull", "192.34.10.11"):
print(f"Hello!!")
> write to log: user devnull [ip: 192.34.10.11] does not exists

Пример №3: Валидация входных данных. В примере к нам приходят данные в формате json. Нам необходимо выбрать все записи определенного формата:

NEED = {
"name": str,
"weight": int,
"age": int,
}

def is_valid(data):
valid = True
for need_key_name, need_type in NEED.items():
# проверяем наличие ключа
if need_key_name in data:
# если ключ есть, проверяем тип значения
data_type = type(data[need_key_name])
if data_type != need_type:
print(f"type error: '{need_key_name}' is {data_type}, need: {need_type}")
valid = False
else:
print(f"key error: '{need_key_name}' does not exists")
valid = False

return valid

if is_valid({"name": "Alex"}):
print("data is valid")
>
key error: 'weight' does not exists
key error: 'age' does not exists

if is_valid({"name": "Alex", "age": "18"}):
print("data is valid")
>
key error: 'weight' does not exists
type error: 'age' is <class 'str'>, need: <class 'int'>

if is_valid({"name": "Alex", "weight": 60, "age": 18}):
print("data is valid")
> data is valid

Оператор elif

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

shinobi = 'Naruto'
if shinobi == 'Orochimaru':
print('fushi tensei')
elif shinobi == 'Naruto':
print('RASENGAN')
elif shinobi == 'Sasuke':
print('chidori')

> RASENGAN

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

Но помните, что первое условие всегда задается с if

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

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

Если ни одно из условий для частей if и elif не выполняется, то срабатывает заключительный блок под оператором еlse (если он существует).

Заглушка pass

Оператор-заглушка pass заменяет собой отсутствие какой-либо операции.

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

Наличие тела инструкции в Python обязательно

sum = 100000
account_first = 12000
account_second = 360000

if account_first > sum:
pass
elif account_second > sum:
pass
else:
print(sum)

if else в одну строку

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

# так выглядит условие в одну строку в JavaScript
const accessAllowed = (age > 21) ? true : false;

Читается это выражение так: если age больше 21, accessAllowed равен true, иначе — accessAllowed равен false.

В Python отсутствует тернарный оператор

Вместо тернарного оператора, в Питоне используют инструкцию if else, записанную в виде выражения (в одно строку):

<expression if True> if <predicate> else <expression if False>

Пример:

number = -10
abs_number = number if number >= 0 else -number

print(abs_number)

Такая конструкция может показаться сложной, поэтому для простоты восприятия, нужно поделить ее на 3 блока:

Для простоты восприятия if-else, записанного одной строкой, разделите выражение на 3 блока

Стоит ли использовать такой синтаксис? Если пример простой, то однозначно да:

# полная версия
count = 3
if count < 100:
my_number = count
else:
my_number = 100


# сокращенная версия
count = 3
my_number = count if count < 100 else 100

Вполне читаемо смотрятся и следующие 2 примера:

x = "Kate" if "Alex" in "My name is Alex" else "Mary"
print(x)
> Kate


y = 43 if 42 in range(100) else 21
print(y)
> 43

Но если вы используете несколько условий, сокращенная конструкция усложняется и становится менее читаемой:

x = 10
result = 100 if x > 42 else 42 if x == 42 else 0


print(result)
> 0

Вложенные условия

Ограничений для уровней вложенности в Python не предусмотрено, а регулируются они все теми же отступами:

# делать код менее читаемым можно до бесконечности
def run(action):
if action:
print(some_func())
else:
if some_func():
num = one_func()
if num:
if 0 < num < 100:
print(num)
else:
print('-')

Стоит ли использовать такие вложенности? Скорее нет, чем да. Одно из положений Python Zen гласит:

Flat is better than nested (развернутое лучше вложенного).

Большая вложенность имеет следующие недостатки:

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

Но что делать, если в скрипте не получается уйти от большой вложенности if-else? 🤷‍♂️

Чтобы уйти от большой вложенности, попробуйте не использовать оператор else

Пример выше, можно записать следующим образом:

def run(action):
if action:
print(some_func())
return

if not some_func():
return

num = one_func()
if not num:
return

if 0 < num < 100:
print(num)
return

print('-')

Конструкция switch case

В Python отсутствует инструкция switch case

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

# пример на C++
int main() {
int n = 5;
# сравниваем значение n поочередно со значениями case-ов
switch (n) {
case 1:
cout << n;
break;
case 2:
cout << n;
break;
# так как 5 не равняется ни 1-у, ни 2-м, то выполняется блок default
default:
cout << "There is not your number";
break;
}
return 0;
}


> There is not your number

Свято место пусто не бывает, поэтому в питоне такое множественное ветвление, в обычном случае, выглядит как последовательность проверок if-elif:

n = 5
if n == 1:
print(n)
elif n == 2:
print(n)
else:
print("There is not your number")


> "There is not your number"

Однако есть и более экзотический вариант реализации этой конструкции, задействующий в основе своей python-словари:

switch_dict = {
1: 1,
2: 2,
3: 3,
}
print(switch_dict.get(5, "There is not your number"))


> "There is not your number"

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

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

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

Альтернатива.

Действие или обход.

24.1.Полная и сокращенная формы инструкции if

Рассматриваемая инструкция применяется в двух формах:

Полной

Сокращенной

Вполной форме инструкция if .. else моделирует стандартную управляющую структуру, которая называется альтернатива, а в сокращенной форме – стандартную управляющую структуру действие или обход.

Рассматриваемая инструкция имеет следующий формат: if(выр)

инструкция1

[else

инструкция2 ]

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

Зарезервированные слова if и else.

Внутренние инструкции инструкция1 и инструкция2.

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

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

осокращенной форме. В полной форме необязательная часть присутствует, а в сокращенной – нет.

Полная форма инструкции if позволяет организовать разветвление на два направления. Первое направление (true – ветвь разветвления) представлено единственной инструкцией языка Си инструкция1, а второе направление (false — ветвь) – единственной инструкцией инструкция2.

Логика работы полной инструкции if такова. В зависимости от значения, которое имеет выражение выр (true или false) будет выполняться либо внутренняя инструкция инструкция1, либо внутренняя инструкция инструкция2. Внутренняя инструкция инструкция1 выполняется только в том случае, когда значение выражения выр равно true, в противном случае будет выполняться внутренняя инструкция инструкция2. Нетрудно видеть,

46

что логика работы полной инструкции if соответствует стандартной управляющей конструкции “альтернатива”.

В сокращенной форме инструкции if имеется только одна внутренняя инструкция (инструкция1). Работа такой формы инструкции if отличается от работы полной формы инструкции if только для случая, когда значение выражения выр равно false. В этом случае при использовании сокращенной формы инструкции if не выполняется ни каких действий. Можно сказать, что в этом случае имеет место обход действия, предусмотренного единственной инструкцией инструкция1.

Приведем примеры использования инструкции if.

Пример 1. Даны два числа a и b. Необходимо найти значение наибольшего из этих чисел.

/*

В коде, приведенном ниже a, b max – переменные типа double. Переменные a и b содержат исходные данные, а переменная max – ожидаемый результат

*/

if(a > b) max = a;

else

max = b;

/* Вызов функции printf()расположен в линейной части и выполняется сразу после завершения работы инструкции if */

printf(“Максимальное значение = %0.3f”, max);

/*

Конец фрагмента программного кода */

В качестве примера применения сокращенной формы рассматриваемой

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

Пример 2. Даны три числа a, b и c. Необходимо найти значение наибольшего из чисел.

Решение. Предположим вначале, что имеется только два числа. Пусть это будут числа a и b. Такая задача уже решена. Ее решение приведено выше. Теперь эту задачу следует решать повторно, сравнивая уже значения переменных с и max. Оказывается, что такое сравнение можно выполнить с помощью сокращенной формы инструкции if. Ниже приведен программный код, содержащий решение рассматриваемой задачи.

/*

В коде, приведенном ниже, a, b, с и max – переменные типа double.Переменные a, b и c содержат исходные данные, а переменная max – ожидаемый результат

*/

if(a > b) else max = a;

max = b; if(c > max)

max = c;

47

Соседние файлы в папке 1сем Дагаев

  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #

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

Рассмотрим его синтаксис на примере. Пусть от пользователя требуется ввести два целых числа: температуру на улице вчера и сегодня. А программа ответит — сегодня теплее, холоднее или же температура не изменилась:

yesterday_temp = int(input())
today_temp = int(input())
if today_temp > yesterday_temp:
    print("Сегодня теплее, чем вчера.")
elif today_temp < yesterday_temp:
    print("Сегодня холоднее, чем вчера.")
else:
    print("Сегодня такая же температура, как вчера.")

Оператор if является началом условной конструкции. Далее идёт условие, которое возвращает логическое значение True (истина) или False (ложь). Завершается условие символом «двоеточие». Затем — обязательный отступ в четыре пробела, он показывает, что строки объединяются в один блок. Отступ аналогичен использованию фигурных скобок или ключевых слов begin и end в других языках программирования.

Тело условной конструкции может содержать одно или несколько выражений (строк). По завершении тела может идти следующее условие, которое начинается с оператора elif (сокращение от else if — «иначе если»). Оно проверяется только в случае, если предыдущее условие не было истинным.

Синтаксис в elif аналогичен if. Операторов elif для одного блока условного оператора может быть несколько, а может не быть совсем. Последним идёт оператор else, который не содержит условия, а выполняется, только если ни одно из предыдущих условий в if и elif не выполнилось. Оператор else не является обязательным.

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

  • > (больше);
  • >= (больше или равно);
  • < (меньше);
  • <= (меньше или равно);
  • == (равно);
  • != (не равно).

Для записи сложных условий можно применять логические операции:

  • and — логическое «И» для двух условий. Возвращает True, если оба условия истинны, иначе возвращает False;
  • or — логическое «ИЛИ» для двух условий. Возвращает False, если оба условия ложны, иначе возвращает True;
  • not — логическое «НЕ» для одного условия. Возвращает False для истинного условия, и наоборот.

Ниже приведена таблица истинности для логических операций.

x y not x x or y x and y
False False True False False
False True True True False
True False False True False
True True False True True

Рассмотрим следующий пример. Пользователь должен ввести первую и последнюю буквы русского алфавита. Ввод производится в двух отдельных строках и в любом регистре.

print("Введите первую и последнюю буквы русского алфавита.")
first_letter = input()
last_letter = input()
if (first_letter == "а" or first_letter == "А") and (
        last_letter == "я" or last_letter == "Я"):
    print("Верно.")
else:
    print("Неверно.")

В логическом операторе можно использовать двойное неравенство. Например, неравенство

if x >= 0 and x < 100:
    ...

лучше записать так:

if 0 <= x < 100:
    ...

Строки также можно сравнивать между собой с помощью операций >, < и т. д. В отличие от чисел, строки сравниваются посимвольно в соответствии с кодами символов в таблице кодировки (в Python рекомендуется использовать кодировку UTF-8).

Компьютер изначально работает только с двоичными числами. Поэтому для работы с символами им назначаются коды — числа, а сами таблицы соответствия символов и кодов называются таблицами кодировки. Кодировок существует достаточно много, одной из самых популярных на данный момент является UTF-8. Например, сравним две односимвольные строки:

letter_1 = "t"
letter_2 = "w"
print(letter_1 > letter_2)

Программа выведет False, поскольку символ t стоит в таблице кодировки раньше, чем w (как и по алфавиту, то есть лексикографически). Чтобы убедиться в этом, можно использовать встроенную функцию ord(), которая возвращает код символа из таблицы кодировки:

print(ord("t"), ord("w"))

В консоли отобразится:

116 119

Поскольку 116 меньше 119, в предыдущем примере мы и получили False.

Чтобы получить символ по его коду, необходимо вызвать встроенную функцию chr() с соответствующим кодом:

print(chr(116), chr(119))

В результате увидим:

t w

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

Для проверки условия наличия подстроки в строке (и для некоторых других вещей, о которых будет рассказано позже) используется оператор in. Например, проверим, что во введённой строке встречается корень «добр» (для слов «добрый», «доброе» и подобных):

text = input()
if "добр" in text:
    print("Встретилось 'доброе' слово.")
else:
    print("Добрых слов не найдено.")

В Python версии 3.10 появился оператор match. В простейшем случае он последовательно сравнивает значение выражения с заранее заданными в операторах case. А затем выполняет код в операторе case, значение в котором соответствует проверяемому. Напишем программу, которая сравнивает значение текущего сигнала светофора с одним из трёх вариантов (красный, жёлтый или зелёный):

color = input()
match color:
    case 'красный' | 'жёлтый':
        print('Стоп.')
    case 'зелёный':
        print('Можно ехать.')
    case _:
        print('Некорректное значение.')

Обратите внимание, что для проверки выполнения условия «ИЛИ» в операторе case не используется логическая операция or. Её нельзя использовать, поскольку она применяется для переменных логического типа, а в примере перечисляются значения-строки. Вместо неё мы используем специальный оператор |.

Последний оператор case выполняется всегда и сработает в случае, если ни одно из предыдущих условий не сработало. Оператор match похож на оператор switch других языков программирования — C++, JavaScript и т. д.

Рассмотрим некоторые полезные встроенные функции.

  • Для определения длины строки (а также других коллекций, о которых будет рассказано позже) используется функция len().
  • Для определения максимального и минимального из нескольких значений (не только числовых) используются функции max() и min() соответственно.
  • Функция abs() используется для определения модуля числа.

Рассмотрим применение встроенных функций в следующем примере. Обратите внимание на строки, начинающиеся со знака #. Так в Python обозначаются комментарии — линии, которые не выполняются интерпретатором, а служат для пояснения кода.

m = 12
n = 19
k = 25

# максимальное число
print(max(m, n, k))

line_1 = "m"
line_2 = "n"
line_3 = "k"

# минимальная лексикографически строка
print(min(line_1, line_2, line_3))

# количество цифр в числе 2 в степени 2022
print(len(str(2 ** 2022)))

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

Ещё по теме

  • Оператор match также используется для так называемой проверки шаблона (pattern matching), почитать о которой можно в этом материале.
  • Все доступные в Python встроенные функции можно посмотреть на этой странице.

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

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

Операторы управления бывают следующих типов:

  1. Оператор-выражение if
  2. Оператор-выражение if-else
  3. Оператор-выражение if-elif-else
  4. Цикл while
  5. Цикл for
  6. Оператор-выражение break
  7. Оператор-выражение continue

В этом уроке речь пойдет о первых трех операторах управления.

Синтаксис оператора if следующий:

if condition:
    <indented statement 1>
    <indented statement 2>

<non-indented statement>

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

Стоит обратить внимание, что у каждой инструкции в блоке if одинаковый отступ от слова if. Многие языки, такие как C, C++, Java и PHP, используют фигурные скобки ({}), чтобы определять начало и конец блока, но в Python используются отступы.

Каждая инструкция должна содержать одинаковое количество пробелов. В противном случае программа вернет синтаксическую ошибку. В документации Python рекомендуется делать отступ на 4 пробела. Такая рекомендация актуальная для и для этого .

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

Когда выполняется инструкция if, проверяется условие. Если условие истинно, тогда все инструкции в блоке if выполняются. Но если условие оказывается неверным, тогда все инструкции внутри этого блока пропускаются.

Инструкции следом за условием if, у которых нет отступов, не относятся к блоку if. Например, — это не часть блока if, поэтому она будет выполнена в любом случае.

Например:

number = int(input("Введите число: "))

if number > 10:
    print("Число больше 10")

Первый вывод:

Введите число: 100
Число больше 10

Второй вывод:

Введите число: 5

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

Рассмотрим следующий код:

number = int(input("Введите число: "))
if number > 10:
    print("первая строка")
    print("вторая строка")
    print("третья строка")

print("Выполняется каждый раз, когда вы запускаете программу")
print("Конец")

Первый вывод:

Введите число: 45
первая строка
вторая строка
третья строка
Выполняется каждый раз, когда вы запускаете программу
Конец

Второй вывод:

Введите число: 4
Выполняется каждый раз, когда вы запускаете программу
Конец

Здесь важно обратить внимание, что только выражения на строках 3, 4 и 5 относятся к блоку if. Следовательно, они будут исполнены только в том случае, когда условие if будет истинно. Но инструкции на строках 7 и 8 выполнятся в любом случае.

Консоль Python реагирует иначе при использовании операторов управления прямо в ней. Стоит напомнить, что для разбития выражения на несколько строк используется оператор продолжение (). Но в этом нет необходимости с операторами управления. Интерпретатор Python автоматически активирует мультистрочный режим, если нажать Enter после условия if. Например:

>>>
>>> n = 100
>>> if n > 10:
...

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

Чтобы закончить инструкцию if, нужно добавить еще одну инструкцию в блок if:

>>>
>>> n = 100
>>> if n > 10:
...     print("n v 10")
...

Python не будет автоматически добавлять отступ. Это нужно сделать самостоятельно. Закончив ввод инструкции, нужно дважды нажать Enter, чтобы исполнить инструкцию. После этого консоль вернется к изначальному состоянию.

>>>
>>> n = 100
>>> if n > 10:
...     print("n больше чем 10")
...
n больше чем 10
>>>

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

Оператор if-else

Оператор if-else исполняет одну порцию инструкций, если условие истинно и другое — если нет. Таким образом этот оператор предлагает два направления действий. Синтаксис оператора if-else следующий:

if  condition:
    # блок if
    statement 1
    statement 2
    and so on
else:
    # блок else
    statement 3
    statement 4
    and so on:

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

Когда оператор if-else исполняется, условие проверяется, и если оно возвращает True, когда инструкции в блоке if исполняются. Но если возвращается False, тогда исполняются инструкции из блока else.

Пример 1: программа для расчета площади и длины окружности круга.

radius = int(input("Введите радиус: "))

if radius >= 0:
    print("Длина окружности = ",  2  *  3.14  *  radius)
    print("Площадь = ", 3.14 * radius ** 2)
else:
    print("Пожалуйста, введите положительное число")

Первый вывод:

Введите радиус: 4
Длина окружности = 25.12
Площадь = 50.24

Второй вывод:

Введите радиус: -12
Пожалуйста, введите положительное число

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

В инструкциях if-else нужно следить за тем, чтобы условия if и else находились на одном уровне. В противном случае программа вернет синтаксическую ошибку. Например:

radius = int(input("Введите радиус: "))

if radius >= 0:
    print("Длина окружности = ",  2  *  3.14  *  radius)
    print("Площадь = ", 3.14 * radius ** 2)

    else:
        print("Пожалуйста, введите положительное число")

Если попробовать запустить эту программу, то появится следующая ошибка:

$ python3 if_and_else_not_aligned.py
  File "if_and_else_not_aligned.py", line 6
    else:
       ^
SyntaxError: invalid syntax
$

Для исправления проблемы нужно вертикально выровнять if и else

Другой пример:

Пример 2: программа для проверки пароля, введенного пользователем.

password = input("Введите пароль: ")
if password == "sshh":
    print("Добро пожаловать")
else:
    print("Доступ запрещен")

Первый вывод:

Введите пароль: sshh
Добро пожаловать

Второй вывод:

Введите пароль: abc
Доступ запрещен

Вложенные операторы if и if-else

Использовать операторы if-else можно внутри других инструкций if или if-else. Это лучше объяснить на примерах:

Оператор if внутри другого if-оператора

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

gre_score = int(input("Введите текущий лимит: "))
per_grad = int(input("Введите кредитный рейтинг: "))

if per_grad > 70:
    # внешний блок if
        if gre_score > 150:
            # внутренний блок if
	    print("Поздравляем, вам выдан кредит")
else:
    print("Извините, вы не имеете права на кредит")

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

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

Сначала оценивается внешнее условие if, то есть per_grad > 70. Если оно возвращает True, тогда управление программой происходит внутри внешнего блока if. Там же проверяется условие gre_score > 150. Если оно возвращает True, тогда в консоль выводится "Congratulations you are eligible for loan". Если False, тогда программа выходит из инструкции if-else, чтобы исполнить следующие операции. Ничего при этом не выводится в консоль.

При этом если внешнее условие возвращает False, тогда выполнение инструкций внутри блока if пропускается, и контроль переходит к блоку else (9 строчка).

Первый вывод:

Введите текущий лимит: 160
Введите кредитный рейтинг: 75
Поздравляем, вам выдан кредит

Второй вывод:

Введите текущий лимит: 160
Введите кредитный рейтинг: 60
Извините, вы не имеете права на кредит

У этой программы есть одна маленькая проблема. Запустите ее заново и введите gre_score меньше чем 150, а per_grade — больше 70:

Вывод:

Введите текущий лимит: 140
Введите кредитный рейтинг: 80

Программа не выводит ничего. Причина в том, что у вложенного оператора if нет условия else. Добавим его в следующем примере.

Пример 2: инструкция if-else внутри другого оператора if.

gre_score = int(input("Введите текущий лимит: "))
per_grad = int(input("Введите кредитный рейтинг: "))

if per_grad > 70:
    if gre_score > 150:
        print("Поздравляем, вам выдан кредит")
    else:
        print("У вас низкий кредитный лимит")
else:
    print("Извините, вы не имеете права на кредит")

Вывод:

Введите текущий лимит: 140
Введите кредитный рейтинг: 80
У вас низкий кредитный лимит

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

Эта программа работает та же, как и предыдущая. Единственное отличие — у вложенного оператора if теперь есть инструкция else. Теперь если ввести балл GRE меньше, чем 150, программа выведет: “У вас низкий кредитный лимит”

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

Оператор if-else внутри условия else

Пример 3: программа для определения оценки студента на основе введенных баллов.

score = int(input("Введите вашу оценку: "))

if score >= 90:
    print("Отлично! Ваша оценка А")
else:
    if score >= 80:
	print("Здорово! Ваша оценка - B")
    else:
	if score >= 70:
	    print("Хорошо! Ваша оценка - C")
	else:
	    if score >= 60:
		print("Ваша оценка - D. Стоит повторить материал.")
	    else:
		print("Вы не сдали экзамен")

Первый вывод:

Введите вашу оценку: 92
Отлично! Ваша оценка А

Второй вывод:

Введите вашу оценку: 72
Хорошо! Ваша оценка - C

Третий вывод:

Введите вашу оценку: 56
Вы не сдали экзамен

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

Когда управление программой переходит к оператору if-else, проверяется условие на строке 3 (score >= 90). Если оно возвращает True, в консоль выводится “Отлично! Ваша оценка А”. Если значение неверное, управление переходит к условию else на 5 строке. Теперь проверяется условие score >= 80 (6 строка). Если оно верное, тогда в консоли выводится “Здорово! Ваша оценка — B”.

В противном случае управление программой переходит к условию else на 8 строке. И здесь снова имеется вложенный оператор if-else. Проверяется условие (score >= 70). Если оно истинно, тогда в консоль выводится “Хорошо! Ваша оценка — C”. В противном случае управление переходит к блоку else на 11 строке. В конце концов, проверяется условие (score >= 60). Если оно возвращает True, тогда в консоль выводится “Ваша оценка — D. Стоит повторить материал.” Если же False, тогда в консоли будет “Вы не сдали экзамен”. На этом этапе управление переходит к следующим инструкциям, написанным после внешнего if-else.

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

Оператор if-elif-else

Оператор if-elif-else — это альтернативное представление оператора if-else, которое позволяет проверять несколько условий, вместо того чтобы писать вложенные if-else. Синтаксис этого оператора следующий:

if condition_1:
    # блок if
    statement
    statement
    more statement
elif condition_2:
    # первый блок elif
    statement
    statement
    more statement
elif condition_3:
    # второй блок elif
    statement
    statement
    more statement

...

else
    statement
    statement
    more statement

Примечание: означает, что можно писать сколько угодно условий eilf.

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

Когда исполняется инструкция if-elif-else, в первую очередь проверяется condition_1. Если условие истинно, тогда исполняется блок инструкций if. Следующие условия и инструкции пропускаются, и управление переходит к операторам вне if-elif-else.

Если condition_1 оказывается ложным, тогда управление переходит к следующему условию elif, и проверяется condition_2. Если оно истинно, тогда исполняются инструкции внутри первого блока elif. Последующие инструкции внутри этого блока пропускаются.

Этот процесс повторяется, пока не находится условие elif, которое оказывается истинным. Если такого нет, тогда исполняется блок else в самом конце.

Перепишем программу с помощью if-elif-else.

score = int(input("Введите вашу оценку: "))

if score >= 90:
    print("Отлично! Ваша оценка А")
elif score >= 80:
    print("Здорово! Ваша оценка - B")
elif score >= 70:
    print("Хорошо! Ваша оценка - C")
elif score >= 60:
    print("Ваша оценка - D. Стоит повторить материал.")
else:
    print("Вы не сдали экзамен")

Первый вывод:

Введите вашу оценку: 78
Хорошо! Ваша оценка - C

Второй вывод:

Введите вашу оценку: 91
Отлично! Ваша оценка А

Третий вывод:

Введите вашу оценку: 55
Вы не сдали экзамен

Такую программу намного легче читать, чем в случае с вложенными if-else.

Содержание:развернуть

  • Как работает if else
  • Синтаксис

  • Отступы

  • Примеры

  • Оператор elif
  • Заглушка pass
  • if else в одну строку
  • Вложенные условия
  • Конструкция switch case

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

Говоря простыми словами, конструкция if else в Python указывает интерпретатору, следует ли выполнять определенный участок кода или нет.

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

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

Синтаксис

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

# самый простой пример, где есть всего одно условие
a = 1
if a == 1:
print("It is true")

> It is true

Синтаксически конструкция выглядит следующим образом:

  1. сначала записывается часть if с условным выражением, которое возвращает истину или ложь;
  2. затем может следовать одна или несколько необязательных частей elif (в других языках вы могли встречать else if);
  3. Завершается же запись этого составного оператора также необязательной частью else.

Принцип работы оператора выбора в Python
count = 1
# условное выражение может быть сколь угодно сложным,
# и может быть сколь угодно много elif-частей
if True and count == 1 and count == 2:
print("if")
elif count == 'count':
print("First elif")
elif count == 14.2:
print("Second elif")
elif count == 1:
print("Nth elif")
else:
print("Else")

> Nth elif

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

b = 10
if b == 10:
# любое количество инструкций
print(b)
b = b * 15
b = b - 43
b = b ** 0.5
print(b)
elif b == 20:
print("You will not see me")
else:
print("And me")

> 10
> 10.344080432788601

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

Отступы

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

# начало кода
# код
# код
# код
# начало первого отступа
# первый отступ
# первый отступ
# начало второго отступа
# второй отступ
# второй отступ
# конец второго отступа
# конец первого отступа

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

var_a = 5
var_b = 10
var_c = 20
if var_c**2 > var_a * var_b:
# блок №1
if var_c < 100:
# блок №2
if var_c > 10:
# блок №3
var_a = var_a * var_b * var_c
# блок №2
var_b = var_a + var_c
# блок №1
var_c = var_a - var_b
print(var_a)
print(var_b)
print(var_c)

> 1000
> 1020
> -20

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

Подробнее о табуляции и отступах в Python:

Примеры

Рассмотрим несколько практических примеров использования условного оператора.

Пример №1: создание ежедневного бэкапа (например базы данных):

from datetime import datetime

def daily_backup(last_backup_date):
"""
Передаем дату последнего бэкапа.
Если прошло больше 1 дня, создаем бэкап
"""
if not last_backup_date:
print(f"creating first backup [{datetime.now().date()}] ..")
return

delta = datetime.now() - last_backup_date
if delta.days > 0:
print(f"creating backup [{datetime.now().date()}] ..")
else:
print(f"backup on [{datetime.now().date()}] already exists")

daily_backup("")
> creating first backup [2020-08-15] ..

daily_backup(datetime(2020, 8, 14))
> creating backup [2020-08-15] ..

daily_backup(datetime(2020, 8, 15))
> backup on [2020-08-15] already exists

Пример №2: Проверка доступа пользователя к системе. В данном примере if проверяет наличие элемента в списке:

BLACK_LIST = ['192.34.12.3', '192.34.12.5', '192.34.10.23']
USERS = ['rolli34', 'constantinpetrovv', 'kate901']

def access_available(user_name, ip):
if user_name in USERS:
if ip not in BLACK_LIST:
return True
else:
print(f"write to log: user {user_name} [ip: {ip}] in block list")
else:
print(f"write to log: user {user_name} [ip: {ip}] does not exists")
return False

if access_available("rolli34", "192.34.12.111"):
print(f"Hello!!")
> Hello!!

if access_available("rolli34", "192.34.10.23"):
print(f"Hello!!")
> write to log: user rolli34 [ip: 192.34.10.23] in block list

if access_available("devnull", "192.34.10.11"):
print(f"Hello!!")
> write to log: user devnull [ip: 192.34.10.11] does not exists

Пример №3: Валидация входных данных. В примере к нам приходят данные в формате json. Нам необходимо выбрать все записи определенного формата:

NEED = {
"name": str,
"weight": int,
"age": int,
}

def is_valid(data):
valid = True
for need_key_name, need_type in NEED.items():
# проверяем наличие ключа
if need_key_name in data:
# если ключ есть, проверяем тип значения
data_type = type(data[need_key_name])
if data_type != need_type:
print(f"type error: '{need_key_name}' is {data_type}, need: {need_type}")
valid = False
else:
print(f"key error: '{need_key_name}' does not exists")
valid = False

return valid

if is_valid({"name": "Alex"}):
print("data is valid")
>
key error: 'weight' does not exists
key error: 'age' does not exists

if is_valid({"name": "Alex", "age": "18"}):
print("data is valid")
>
key error: 'weight' does not exists
type error: 'age' is <class 'str'>, need: <class 'int'>

if is_valid({"name": "Alex", "weight": 60, "age": 18}):
print("data is valid")
> data is valid

Оператор elif

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

shinobi = 'Naruto'
if shinobi == 'Orochimaru':
print('fushi tensei')
elif shinobi == 'Naruto':
print('RASENGAN')
elif shinobi == 'Sasuke':
print('chidori')

> RASENGAN

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

Но помните, что первое условие всегда задается с if

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

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

Если ни одно из условий для частей if и elif не выполняется, то срабатывает заключительный блок под оператором еlse (если он существует).

Заглушка pass

Оператор-заглушка pass заменяет собой отсутствие какой-либо операции.

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

Наличие тела инструкции в Python обязательно

sum = 100000
account_first = 12000
account_second = 360000

if account_first > sum:
pass
elif account_second > sum:
pass
else:
print(sum)

if else в одну строку

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

# так выглядит условие в одну строку в JavaScript
const accessAllowed = (age > 21) ? true : false;

Читается это выражение так: если age больше 21, accessAllowed равен true, иначе — accessAllowed равен false.

В Python отсутствует тернарный оператор

Вместо тернарного оператора, в Питоне используют инструкцию if else, записанную в виде выражения (в одно строку):

<expression if True> if <predicate> else <expression if False>

Пример:

number = -10
abs_number = number if number >= 0 else -number

print(abs_number)

Такая конструкция может показаться сложной, поэтому для простоты восприятия, нужно поделить ее на 3 блока:

Для простоты восприятия if-else, записанного одной строкой, разделите выражение на 3 блока

Стоит ли использовать такой синтаксис? Если пример простой, то однозначно да:

# полная версия
count = 3
if count < 100:
my_number = count
else:
my_number = 100

# сокращенная версия
count = 3
my_number = count if count < 100 else 100

Вполне читаемо смотрятся и следующие 2 примера:

x = "Kate" if "Alex" in "My name is Alex" else "Mary"
print(x)
> Kate

y = 43 if 42 in range(100) else 21
print(y)
> 43

Но если вы используете несколько условий, сокращенная конструкция усложняется и становится менее читаемой:

x = 10
result = 100 if x > 42 else 42 if x == 42 else 0

print(result)
> 0

Вложенные условия

Ограничений для уровней вложенности в Python не предусмотрено, а регулируются они все теми же отступами:

# делать код менее читаемым можно до бесконечности
def run(action):
if action:
print(some_func())
else:
if some_func():
num = one_func()
if num:
if 0 < num < 100:
print(num)
else:
print('-')

Стоит ли использовать такие вложенности? Скорее нет, чем да. Одно из положений Python Zen гласит:

Flat is better than nested (развернутое лучше вложенного).

Большая вложенность имеет следующие недостатки:

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

Но что делать, если в скрипте не получается уйти от большой вложенности if-else? 🤷‍♂️

Чтобы уйти от большой вложенности, попробуйте не использовать оператор else

Пример выше, можно записать следующим образом:

def run(action):
if action:
print(some_func())
return

if not some_func():
return

num = one_func()
if not num:
return

if 0 < num < 100:
print(num)
return

print('-')

Конструкция switch case

В Python отсутствует инструкция switch case

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

# пример на C++
int main() {
int n = 5;
# сравниваем значение n поочередно со значениями case-ов
switch (n) {
case 1:
cout << n;
break;
case 2:
cout << n;
break;
# так как 5 не равняется ни 1-у, ни 2-м, то выполняется блок default
default:
cout << "There is not your number";
break;
}
return 0;
}

> There is not your number

Свято место пусто не бывает, поэтому в питоне такое множественное ветвление, в обычном случае, выглядит как последовательность проверок if-elif:

n = 5
if n == 1:
print(n)
elif n == 2:
print(n)
else:
print("There is not your number")

> "There is not your number"

Однако есть и более экзотический вариант реализации этой конструкции, задействующий в основе своей python-словари:

switch_dict = {
1: 1,
2: 2,
3: 3,
}
print(switch_dict.get(5, "There is not your number"))

> "There is not your number"

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

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

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

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

Содержание

  1. Условные конструкции и оператор if в языке Python
  2. Синтаксис оператора if
  3. Простейший пример if
  4. Использование логических операторов в условиях
  5. Вложенность и else
  6. Оператор if в комбинации с else и elif
  7. Примеры комбинации if-else
  8. Примеры цепочки elif
  9. Краткая запись if-else
  10. Условный оператор в современном Python
  11. Пример использования условного выражения
  12. Множественные условия с условным выражением
  13. Ограничения использования условного выражения
  14. Вопрос-ответ:
  15. Можно ли использовать else вместе с оператором if?
  16. Когда следует использовать оператор elif?
  17. Какие логические операторы можно использовать вместе с оператором if?
  18. Какие ошибки могут возникнуть при использовании условных конструкций в языке Python?
  19. Видео:
  20. If else. Конструкция логического выбора if. Лесенка if — else if. Примеры использования. Урок #12.

Условные конструкции и оператор if в языке Python

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

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

if выражение:

блок кода

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

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

if выражение:

блок кода1

else:

блок кода2

Оператор elif – это сокращение от «else if». Конструкция elif позволяет проверять следующее условие, если предыдущее было ложным. Такая конструкция может быть повторена несколько раз. Конструкция if-elif-else выглядит следующим образом:

if выражение1:

блок кода1

elif выражение2:

блок кода2

else:

блок кода3

Оператор if в языке Python можно также использовать для проверки наличия определенного элемента в списке или словаре, для проверки соответствия строк заданному шаблону и многое другое. Кроме того, оператор if можно использовать вместе с другими операторами, такими как and, or, not, для составления сложных логических выражений.

Синтаксис оператора if

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

if логическое выражение:

Затем следует блок кода, который будет выполнен, если логическое выражение истинно. Этот блок кода должен быть с отступом относительно ключевого слова if.

Блок кода, который исполнится, если условие не выполнено, может быть опционально задан с помощью ключевого слова else:

if логическое выражение:

блок кода для выполнения, если условие истинно

else:

блок кода для выполнения, если условие ложно

Для выполнения проверки нескольких условий в Python используется конструкция if-elif-else. Синтаксис такой же, как и для обычного оператора if, только вместо else используется ключевое слово elif, которое также должно содержать логическое условие:

if логическое выражение 1:

блок кода для выполнения, если условие 1 истинно

elif логическое выражение 2:

блок кода для выполнения, если условие 2 истинно

else:

блок кода для выполнения, если все условия ложны

Это позволяет задавать проверку сразу для нескольких условий и выполнять соответствующий блок кода, если одно из них истинно.

Простейший пример if

Условный оператор if в Python используется для выполнения определенных действий в зависимости от истинности выражения.

Рассмотрим простейший пример:

  1. Зададим переменную x со значением 5.
  2. Напишем условие: если x равно 5, выведем на экран фразу «x равно 5».
  3. Завершим блок условия.
Код Результат
x = 5
if x == 5:
    print("x равно 5")
x равно 5

В данном примере, так как значение переменной x равно 5, условие сработало и на экран была выведена соответствующая фраза.

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

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

Использование логических операторов в условиях

Использование логических операторов в условиях

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

В Python есть три логических оператора:

  • and – возвращает True, если оба условия истинны
  • or – возвращает True, если хотя бы одно условие истинно
  • not – инвертирует значение – True превращает в False, а False – в True

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

age = 25

income = 50000

if age > 18 and income > 40000:

print("Вы можете взять кредит")

В этом коде мы проверяем два условия – возраст больше 18 лет и доход больше 40000. Если оба условия истинны, будет выведено сообщение о возможности взять кредит.

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

color = "green"

if color == "red" or color == "blue":

print("Цвет красный или синий")

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

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

door = "closed"

if not door == "open":

print("Дверь закрыта")

В этом примере мы проверяем, закрыта ли дверь, но мы добавляем оператор not, что инвертирует значение. Таким образом, если дверь закрыта, будет выведено сообщение о её закрытости.

Вложенность и else

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

Вложенный if может содержать свой оператор else, который будет выполнен только в случае, если условие вложенного if ложно. Также может быть использован else для первого if, если нужно выполнить какое-то действие в случае, если все условия ложны.

Рассмотрим пример:

age = 25

if age > 18:

    print(«Вы совершеннолетний»)

    if age > 25:

        print(«Вы уже давно совершеннолетний»)

    else:

        print(«Вы еще молоды»)

else:

    print(«Вы несовершеннолетний»)

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

Также в примере используется else для первого if, чтобы вывести сообщение «Вы несовершеннолетний», если все условия ложны.

Оператор if в комбинации с else и elif

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

Однако, зачастую в программировании возникает необходимость выполнять определенные действия в зависимости от разных условий. Для этого в Python используются комбинации оператора if с else и elif.

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

if <условие>:

<блок кода, если условие истинное>

else:

<блок кода, если условие ложное>

Если условие истинное, то будет выполнен первый блок кода, а если условие ложное, то будет выполнен второй блок кода.

Конструкция оператора if с elif позволяет выполнить условный блок кода из нескольких блоков в зависимости от разных условий. При этом используется следующий синтаксис:

if <условие1>:

<блок кода, если условие1 истинное>

elif <условие2>:

<блок кода, если условие2 истинное>

elif <условие3>:

<блок кода, если условие3 истинное>

else:

<блок кода, если все условия ложные>

В такой конструкции сначала проверяется условие1, если оно истинно, то будет выполнен соответствующий блок кода. Если условие1 ложно, то проверяется условие2 и так далее, пока не будет выполнен соответствующий блок кода или пока не закончатся условия. Если все условия ложные, то будет выполнен блок кода в блоке else.

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

Примеры комбинации if-else

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

Вот пример, использующий условие if-else:

  1. Пример 1:

    x = 10

    if x > 5:

    print("x больше 5")

    else:

    print("x меньше или равно 5")

    В этом примере x равно 10. Условие if проверяет, что x больше 5, и выводит соответствующее сообщение. Если условие if неверно, выводится сообщение из блока else.

  2. Пример 2:

    x = 7

    if x < 5:

    print("x меньше 5")

    elif x < 10:

    print("x меньше 10")

    else:

    print("x больше или равно 10")

    В этом примере x равно 7. Условие if проверяет, что x меньше 5, но это неверно, поэтому проверка переходит к блоку elif. Условие elif проверяет, что x меньше 10, и выводит соответствующее сообщение. Если оба условия if и elif неверны, проверка переходит к блоку else, который выводит сообщение.

  3. Пример 3:

    age = 28

    legal_age = 18

    if age < legal_age:

    print("Вы не можете голосовать.")

    else:

    print("Вы можете голосовать.")

    В этом примере age равно 28, а legal_age равно 18. Условие if проверяет, что age меньше legal_age, что неверно. Поэтому проверка переходит к блоку else, который выводит сообщение.

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

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

Примеры цепочки elif

Цепочка elif используется в операторе if для проверки нескольких условий, если предыдущие условия оказались ложными. Ниже приведены примеры цепочки elif.

Пример кода Описание
x = 7

if x > 10:

print("x больше 10")

elif x > 5:

print("x больше 5, но меньше 10")

else:

print("x меньше или равен 5")
Если x больше 10, то выведется «x больше 10». Если x меньше 10, но больше 5, то выведется «x больше 5, но меньше 10». Во всех остальных случаях будет выведено «x меньше или равен 5».
x = "банан"

if x == "яблоко":

print("фрукт - яблоко")

elif x == "банан":

print("фрукт - банан")

elif x == "апельсин":

print("фрукт - апельсин")

else:

print("это не фрукт")
Если x равно «яблоко», то выведется «фрукт — яблоко». Если x равно «банан», то выведется «фрукт — банан». Если x равно «апельсин», то выведется «фрукт — апельсин». Во всех остальных случаях будет выведено «это не фрукт».

Цепочка elif может иметь сколько угодно блоков, но стоит помнить, что чем больше блоков, тем сложнее понимать логику кода.

Краткая запись if-else

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

Синтаксис тернарного оператора выглядит следующим образом:

(значение_если_истина) if (условие) else (значение_если_ложь)

Рассмотрим пример кода:

x = 5

value = 10 if x > 3 else 0

print(value) # результат: 10

В данном примере мы сначала задаем значение переменной x равным 5. Затем мы записываем значение переменной value, используя тернарный оператор. Условие в данном случае звучит так: «если x больше 3». Если условие истинно, то значение переменной value будет равным 10. Если же условие ложно, то значение переменной value будет равным 0.

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

Условный оператор в современном Python

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

Условный оператор в современном Python можно записать в несколько строк, используя операторы elif и else. Такой синтаксис позволяет легко проверять несколько условий, и выполнять различные действия в зависимости от их истинности.

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

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

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

Пример использования условного выражения

Условное выражение позволяет программе принимать решения в зависимости от того, выполняется ли условие, описанное в выражении или нет. Рассмотрим пример использования оператора if в языке Python:

x = 20

if x > 10:

print("x больше 10")

else:

print("x меньше 10 или равен ему")

В данном примере переменная x получает значение 20, затем в условном выражении проверяется, больше ли оно 10. Если да, то программа выводит сообщение «x больше 10», если нет, то выводится другое сообщение «x меньше 10 или равен ему».

Кроме оператора if, в Python также есть операторы elif и else, которые позволяют задавать несколько условий:

x = 20

if x > 30:

print("x больше 30")

elif x > 10:

print("x больше 10, но меньше 30")

else:

print("x меньше или равен 10")

В данном примере, если x больше 30, то выводится сообщение «x больше 30». Если x больше 10, но меньше 30, то выводится сообщение «x больше 10, но меньше 30». Если x меньше или равен 10, то выводится сообщение «x меньше или равен 10».

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

x = 10

y = 20 if x > 5 else 30

print(y)

В данном примере, если x больше 5, то переменной y присваивается значение 20, иначе – 30. В результате выводится значение переменной y, которая в данном случае равна 20.

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

В языке Python условный оператор if может также использоваться для множественной проверки условий. Для этого используется конструкция elif (сокращение от else if).

Синтаксис выглядит следующим образом:

if уcлoвиe_1:

блок_1

elif условие_2:

блок_2

elif уcлoвиe_3:

блок_3

...

else:

блок_n+1

Выполнение программы начнется с проверки условия_1. Если оно истинно, будет выполнен блок_1 и программа выйдет из конструкции if. Если условие_1 ложно, то программа перейдет к проверке условия_2. Если условие_2 истинно, будет выполнен блок_2 и программа выйдет из конструкции if. Если условие_2 ложно, то программа перейдет к проверке условия_3 и т.д. Если все условия ложны, будет выполнен блок_n+1.

Пример использования множественной проверки условий:

number = int(input("Введите число: "))

if number > 0:

print("Вы ввели положительное число")

elif number < 0:

print("Вы ввели отрицательное число")

else:

print("Вы ввели ноль")

В этом примере программа проверяет введенное число и выводит соответствующее сообщение в зависимости от значения числа.

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

Ограничения использования условного выражения

Условное выражение – это мощный инструмент в языке программирования Python, но его использование имеет некоторые ограничения. Рассмотрим некоторые из них:

  1. Ограничение на тип данных: условное выражение в Python может содержать только данные логического типа: True или False. Это означает, что если вы попытаетесь выполнить условие с другим типом данных, Python вызовет ошибку.
  2. Ограничение на число вложенных условий: использование условных выражений может привести к множеству вложенных условий (if-else), которые могут быть сложными для чтения и отладки. Кроме того, слишком много вложенных условий может снизить производительность вашей программы.
  3. Ограничение на использование комплексных условий: условное выражение может содержать только одно условие. Комплексные условия (состоящие из нескольких условий, объединенных с помощью логических операторов) не могут быть использованы в запрещенном для них контексте.

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

Понравилась статья? Поделить с друзьями:
  • Что такое платежная инструкция аис идо
  • Что такое мукофальк инструкция по применению
  • Что такое ластовица у колготок фото инструкция
  • Что такое кредитный доктор от совкомбанка пошаговая инструкция
  • Что такое должностная инструкция делопроизводителя