Оператор if else в python

Сравнение строк

Как вы видите,
сравнение двух числовых значений выполняется вполне очевидным образом. Но можно
ли, например, сравнивать строки между собой? Оказывается да, можно. Чтобы
определить, что одна строка больше другой, Python использует
«алфавитный» или «лексикографический» порядок. Другими словами, строки сравниваются
посимвольно. Например:

print('Я' > 'А' )
print( 'Кот' > 'Код' )
print( 'Сонный' > 'Сон' )

Алгоритм
сравнения двух строк довольно прост:

  1. Сначала
    сравниваются первые символы строк.

  2. Если первый
    символ первой строки больше (меньше), чем первый символ второй, то первая
    строка больше (меньше) второй.

  3. Если первые
    символы равны, то таким же образом сравниваются уже вторые символы строк.

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

В примерах выше
сравнение ‘Я’ > ‘А’ завершится на первом шаге, тогда как строки
«Кот» и «Код» будут сравниваться посимвольно:

  1. К равна К.
  2. о равна о.
  3. т больше чем д.

If else in Python: learn the syntax

Single condition example

For a single condition case, specify the case condition after the statement followed by a colon (:). Then, fill another specified action under the statement. Here’s how the code structure should look like:

Replace with the conditions you want to examine, and with the action that should be done if the case is TRUE. Then, replace with the actions that should be done if the case is FALSE.

Here is an example of applying Python statements. In this case, the statement is printed because it fits the primary condition:

Example Copy

In the following example, we make the code execute the command by making the primary condition false:

Example Copy

Checking multiple conditions with if else and elif

To check multiple conditions, you can use the Python in the middle of the function instead of creating a lot of statements as a big loop. The code will look like this:

Replace with the second condition you want to use, and with the action that should be carried out if the second case is TRUE. Then, the rest goes the same as with the single condition example we mentioned first.

The following example shows the use of Python and also :

Example Copy

The program above will run once. If you need to run it multiple times, you would need to use or while statements.

Примеры решения задач

Проверить является ли клетка шахматной доски белой

# Два числа выбираются случайным образом (координаты клетки шахматного поля, от 1 до 8)
# Вывести YES, если клетка белая, и NO, если клетка черная
from random import randint

x = randint(1,8)

y = randint(1,8)
print(x, y)
if (x + y) % 2 == 1:

    print(‘YES’)
else:

    print(‘NO’)

Во втором случаем числа вводятся с клавиатуры

x = int(input(‘Введите координату x: ‘))

y = int(input(‘Введите координату y: ‘))
if (x + y) % 2 == 1:

    print(‘YES’)
else:

    print(‘NO’)

Проверить может ли слон ходить с первой шахматной на вторую

# Четыре числа выбираются случайным образом (координаты клетки шахматного поля, от 1 до 8)
# Вывести YES, если ладья может сходить с первой клетки на вторую, и NO, если не может
# Напомню, что ладья ходит так:
# Л ——X
# |
# |
# |
# X
from random import randint

x1 = randint(1, 8)

x2 = randint(1, 8)

y1 = randint(1, 8)

y2 = randint(1, 8)
print(x1, y1)
print(x2, y2)
if x1 == x2 and y1 != y2 or x1 != x2 and y1 == y2:

    print(‘YES’)
else:

    print(‘NO’)

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

x1 = int(input(‘Введите координату x1: ‘))

x2 = int(input(‘Введите координату y1: ‘))

y1 = int(input(‘Введите координату x2: ‘))

y2 = int(input(‘Введите координату y2: ‘))
if x1 == x2 and y1 != y2 or x1 != x2 and y1 == y2:

    print(‘YES’)
else:

    print(‘NO’)

5 функций для отладки

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

breakpoint

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

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

dir

Эта функция может использоваться в двух случаях:

  • просмотр списка всех локальных переменных;
  • просмотр списка всех атрибутов конкретного объекта.

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

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

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

vars

Эта функция является своего рода смесью двух похожих инструментов: и .

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

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

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

type

Эта функция возвращает тип объекта, который вы ей передаете.

Тип экземпляра класса есть сам класс.

Тип класса — это его метакласс, обычно это .

Атрибут даёт тот же результат, что и функция , но рекомендуется использовать второй вариант.

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

Обратите внимание, что при проверке типов обычно вместо используется функция. Также стоит понимать, что в Python обычно не принято проверять типы объектов (вместо этого практикуется утиная типизация)

help

Если вы находитесь в Python Shell или делаете отладку кода с использованием , и хотите знать, как работает определённый объект, метод или атрибут, функция поможет вам.

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

Синтаксис

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

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

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

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

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

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

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

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

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

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

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

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

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

How to use «else condition»

The «else condition» is usually used when you have to judge one statement on the basis of other. If one condition goes wrong, then there should be another condition that should justify the statement or logic.

Example:

#
#Example file for working with conditional statement
#
def main():
	x,y =8,4
	
	if(x  
  • Code Line 5: We define two variables x, y = 8, 4
  • Code Line 7: The if Statement in Python checks for condition x<y which is False in this case
  • Code Line 9: The flow of program control goes to else condition
  • Code Line 10: The variable st is set to «x is greater than y.»
  • Code Line 11: The line print st will output the value of variable st which is «x is greater than y»,

Оператор else if

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

В примере с балансом банковского счета нам потребуется вывести сообщения для трех разных ситуаций:

  • Баланс ниже 0.
  • Баланс равен 0.
  • Баланс выше 0.

Условие elif будет размещено между  if и оператором else следующим образом:

if balance < 0:
 print("Balance is below 0, add funds now or you will be charged a penalty.")

elif balance == 0:
    print("Balance is equal to 0, add funds soon.")

else:
    print("Your balance is 0 or above.")

После запуска программы:

  • Если переменная balance равна 0, мы получим сообщение из оператора elif («Balance is equal to 0, add funds soon»).
  • Если переменной balance задано положительное число, мы получим сообщение из оператора else («Your balance is 0 or above»).
  • Если переменной balance задано отрицательное число, выведется сообщение из оператора if («Balance is below 0, add funds now or you will be charged a penalty»).

А что если нужно реализовать более трех вариантов сообщения? Этого можно достигнуть, используя более одного оператора elif.

В программе grade.py создадим несколько буквенных оценок, соответствующих диапазонам числовых:

  • 90% или выше эквивалентно оценке А.
  • 80-89% эквивалентно оценке B.
  • 70-79%  — оценке C.
  • 65-69%  — оценке D.
  • 64 или ниже эквивалентно оценке F.

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

Мы можем оставить оператор else без изменений.

if grade >= 90:
    print("A grade")

elif grade >=80:
    print("B grade")

elif grade >=70:
    print("C grade")

elif grade >= 65:
    print("D grade")

else:
    print("Failing grade")

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

  1. Если оценка больше 90, программа выведет «A grade». Если оценка меньше 90, программа перейдет к следующему оператору.
  2. Если оценка больше или равна 80, программа выведет «B grade». Если оценка 79 или меньше, программа перейдет к следующему оператору.
  3. Если оценка больше или равна 70, программа выведет  «C grade». Если оценка 69 или меньше, программа перейдет к следующему оператору.
  4. Если оценка больше или равна 65, программа выведет  «D grade». Если оценка 64 или меньше, программа перейдет к следующему оператору.
  5. Программа выведет «Failing grade», если все перечисленные выше условия не были выполнены.

О чем следует помнить

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

Далее, можно прикинуть, насколько часто предполагается менять код. Если такие планы есть, то лучше уделить время рефакторингу кода, чтобы вывести его на более высокий уровень абстракции. В этом смысле мне нравится следовать правилу трех этапов, тоже взятому из книги Мартина Фаулера «Refactoring»:

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

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

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

Вспомним дзен Python:

Что касается наследования (inheritance), стараемся не создавать слишком глубокие уровни. Это усложняет код и лишает его гибкости. К тому же, вместо необходимости разобраться в нескольких уровнях условных выражений, нам придется разбираться в уровнях наследования классов. Получится, что один комплект проблем просто заменен на другой.

Есть такое мнение, что при написании объектно-ориентированного кода следует предпочитать не наследование, а композицию. Хотя, думаю, что наследование — полезный инструмент, если не создавать слишком глубокую иерархию.

Но выбирать неверное направление абстракции тоже неправильно. Лучше уж копировать и вставлять дублирующийся код. На эту тему есть отличное выступление Санди Метца (Sandi Metz) с конференции по Ruby.

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

Виды плохого кода и варианты рефакторинга

Составные условия

Во-первых, это составные условия для выполнения блока под условным оператором.

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

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

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

Предлагаю переделать условия в булевую переменную (boolean variable) или функцию.

Вернемся к условному выражению с двумя компонентами.

Рефакторинг кода может заключаться в вынесении условия в отдельную переменную с понятным описательным названием. Затем мы используем эту переменную в выражении с оператором :

Эту переменную можно использовать и в том более сложном условном выражении, и еще много-много раз.

Как вариант рефакторинга, можно переделать выражение в функцию, чтобы код стал более читаемым.

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

Еще одна схема программирования, усложняющая чтение кода — это вложенные выражения с оператором (nested if statements). Они включают в себя серию подчиненных выражений, которые приобретают форму наконечника стрелы.

Какие проблемы создает такой код.

Во-первых, в таком коде высокая цикломатическая сложность (cyclomatic complexity). Это такая метрика для количества отдельных ветвей кода. Чем выше цикломатическая сложность, тем код сложнее для понимания и еще сложнее для тестов.

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

Второй совет по поводу рефакторинга кода связан как раз с выравниванием вложенного кода.

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

Давайте пройдемся по коду, который создает эту панель. В нем используется библиотека , которая соединяется с API. Мы получаем ответ (response), и если он 200, то мы получим данные со станции. Затем мы запустим цикл по всем доступным станциям и найдем ту, которая нужна именно нам.

Далее, если количество велосипедов меньше или равно заданному пороговому значению (здесь это будет 3), то мы вернем сообщение о том, что нужно поспешить («Hurry up! Bikes are almost out!»). Если же велосипедов больше порогового значения, то мы возвращаем другое сообщение о том, что их много и торопиться не нужно («No need to rush just yet.»)

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

Есть много способов, с помощью которых можно выровнять вложенный код. Основные из них следующие: — всегда добавлять строку о возвращаемом значении как можно раньше; — заменить условное выражение контрольным оператором (guard clause); — заменить проверку на положительный ответ проверкой на отрицательный ответ; — дополнительная информация

Итак, что можно сделать с этой программой. Сначала мы добавляем контрольного оператора (Guard Clause), который проверяет код статуса на случай, если ответ будет не 200. Это дает возможность объединить логику завершения программы в этом случае, а остальной код не будет иметь посторонних элементов.

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

Дубликаты условных выражений

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

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

Каждому из нас приходилось заниматься этим, т.е. многократно пробегать по всему коду вверх-вниз, пытаясь проследить логику. На самом деле, это не такая уж проблема, если нет планов менять код.

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

How to execute conditional statement with minimal code

In this step, we will see how we can condense out the conditional statement. Instead of executing code for each condition separately, we can use them with a single code.

Syntax

	A If B else C

Example:

	
def main():
	x,y = 10,8
	st = "x is less than y" if (x 
  • Code Line 2: We define two variables x, y = 10, 8
  • Code Line 3: Variable st is set to «x is less than y «if x<y or else it is set to «x is greater than or equal to y». In this x>y variable st is set to «x is greater than or equal to y.»
  • Code Line 4: Prints the value of st and gives the correct output

Instead of writing long code for conditional statements, Python gives you the freedom to write code in a short and concise way.

Python if…else Statement

Syntax of if…else

if test expression:
    Body of if
else:
    Body of else

The statement evaluates and will execute the body of only when the test condition is .

If the condition is , the body of is executed. Indentation is used to separate the blocks.

Example of if…else

Output

Positive or Zero

In the above example, when num is equal to 3, the test expression is true and the body of is executed and the of else is skipped.

If num is equal to -5, the test expression is false and the body of is executed and the body of is skipped.

If num is equal to 0, the test expression is true and body of is executed and of else is skipped.

Using if, elif & else in a lambda function

Till now we have seen how to use if else in a lambda function but there might be cases when we need to check multiple conditions in a lambda function. Like we need to use if , else if & else in a lambda function. We can not directly use elseif in a lambda function. But we can achieve the same effect using if else & brackets i.e.

lambda <args> : <return Value> if <condition > ( <return value > if <condition> else <return value>)

Create a lambda function that accepts a number and returns a new number based on this logic,

  • If the given value is less than 10 then return by multiplying it by 2
  • else if it’s between 10 to 20 then return multiplying it by 3
  • else returns the same un-modified value
# Lambda function with if, elif & else i.e.
# If the given value is less than 10 then Multiplies it by 2
# else if it's between 10 to 20 the multiplies it by 3
# else returns the unmodified same value
converter = lambda x : x*2 if x < 10 else (x*3 if x < 20 else x)
print('convert 5 to : ', converter(5))
print('convert 13 to : ', converter(13))
print('convert 23 to : ', converter(23))
convert 5 to :  10
convert 13 to :  39
convert 23 to :  23

Complete example is as follows,

def main():
    print('*** Using if else in Lambda function ***')
    # Lambda function to check if a given vaue is from 10 to 20.
    test = lambda x : True if (x > 10 and x < 20) else False

    # Check if given numbers are in range using lambda function
    print(test(12))
    print(test(3))
    print(test(24))

    print('*** Creating conditional lambda function without if else ***')

    # Lambda function to check if a given vaue is from 10 to 20.
    check = lambda x : x > 10 and x < 20

    # Check if given numbers are in range using lambda function
    print(check(12))
    print(check(3))
    print(check(24))

    print('*** Using filter() function with a conditional lambda function (with if else) ***')

    # List of numbers
    listofNum = 
    print('Original List : ', listofNum)

    # Filter list of numbers by keeping numbers from 10 to 20 in the list only
    listofNum = list(filter(lambda x : x > 10 and x < 20, listofNum))
    print('Filtered List : ', listofNum)

    print('*** Using if, elif & else in Lambda function ***')

    # Lambda function with if, elif & else i.e.
    # If the given value is less than 10 then Multiplies it by 2
    # else if it's between 10 to 20 the multiplies it by 3
    # else returns the unmodified same value
    converter = lambda x : x*2 if x < 10 else (x*3 if x < 20 else x)

    print('convert 5 to : ', converter(5))
    print('convert 13 to : ', converter(13))
    print('convert 23 to : ', converter(23))

if __name__ == '__main__':
    main()

Output:

*** Using if else in Lambda function ***
True
False
False
*** Creating conditional lambda function without if else ***
True
False
False
*** Using filter() function with a conditional lambda function (with if else) ***
Original List :  
Filtered List :  
*** Using if, elif & else in Lambda function ***
convert 5 to :  10
convert 13 to :  39
convert 23 to :  23

слово ‘elif’

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

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

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

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

Цикл while

Цикл while также используется для повторения частей кода, но вместо зацикливания на n количество раз, он выполняет работу до тех пор, пока не достигнет определенного условия. Давайте взглянем на простой пример:

Python

i = 0
while i < 10:
print(i)
i = i + 1

1
2
3
4

i=

whilei<10

print(i)

i=i+1

Цикл while является своего рода условным оператором. Вот что значит этот код: пока переменная i меньше единицы, её нужно выводить на экран. Далее, в конце, мы увеличиваем её значение на единицу. Если вы запустите этот код, он выдаст от 0 до 9, каждая цифра будет в отдельной строке, после чего задача будет выполнена. Если вы удалите ту часть, в которой мы увеличиваем значение i, то мы получим бесконечный цикл. Как правило – это плохо. Бесконечные циклы известны как логические ошибки, и их нужно избегать. Существует другой способ вырваться из цикла, для этого нужно использовать встроенную функцию break. Давайте посмотрим, как это работает:

Python

while i < 10:
print(i)

if i == 5:
break

i += 1

1
2
3
4
5
6
7

whilei<10

print(i)

ifi==5

break

i+=1

В этой части кода мы добавили условное выражение для проверки того, равняется ли когда-либо переменная i цифре 5. Если нет, тогда мы разрываем цикл. Как вы видите в выдаче кода, как только значение достигает пяти, код останавливается, даже если мы ранее указали while продолжать цикл, пока переменная не достигнет значения 10

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

Встроенный break также известен как инструмент управления потока. Существует еще один, под названием continue, который в основном используется для пропуска итерации, или перейти к следующей итерации. Вот один из способов его применения:

Python

i = 0

while i < 10:
if i == 3:
i += 1
continue

print(i)
if i == 5:
break

i += 1

1
2
3
4
5
6
7
8
9
10
11
12

i=

whilei<10

ifi==3

i+=1

continue

print(i)

ifi==5

break

i+=1

Слегка запутанно, не так ли? Мы добавили второе условное выражение, которое проверяет, не равняется ли i трем. Если да, мы увеличиваем переменную и переходим к следующему циклу, который удачно пропускает вывод значения 3 на экран. Как и ранее, когда мы достигаем значения 5, мы разрываем цикл. Существует еще одна тема, касающаяся циклов, которую нам нужно затронуть – это оператор else.

Basic Python if Command Example for Numbers

The following example illustrates how to use if command in python when we are doing a conditional testing using numbers.

# cat if1.py
days = int(input("How many days are in March?: "))
if days == 31:
  print("You passed the test.")
print("Thank You!")

In the above example:

  • 1st line: Here, we are asking for user input. The input will be an integer, which will be stored in the variable days.
  • 2nd line: This is the if command, where we are comparing whether the value of the variable days is equal to the numerical value 31. The colon at the end is part of the if command syntax, which should be given.
  • 3rd line: This line starts with two space indent at the beginning. Any line (one or more) that follows the if statement, which has similar indentation at the beginning is considered part of the if statement block. In this example, we have only one line after if statement, which is this 3rd line, which has two spaces in the beginning for indent. So, this line will be executed when the condition of the if statement is true. i.e If the value of the variable days is equal to 31, this 3rd will get executed
  • 4th line: This line is outside the if statement block. So, this will get executed whether the if statement is true or false.

The following is the output of the above example, when the if statement condition is true.

# python if1.py
How many days are in March?: 31
You passed the test.
Thank You!

The following is the output of the above example, when the if statement condition is false.

# python if1.py
How many days are in March?: 30
Thank You!

If you are new to python, this will give you a excellent introduction to Python Variables, Strings and Functions

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

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

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

if <expr>:
    <statement(s)>
else:
    <statement(s)>

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

В этом примере x меньше 50, поэтому выполняется первый набор (строки 4-5), а второй набор (строки 7-8) пропускается:

x = 20

if x < 50:
    print('(первый набор)')
    print('x is small')
else:
    print('(второй набор)')
    print('x is large')

Здесь, с другой стороны, x больше 50, поэтому первый набор передается, а второй выполняется:

x = 120

if x < 50:
    print('(первый набор)')
    print('x is small')
else:
    print('(второй набор)')
    print('x is large')

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

, то выполняется этот набор:

if <expr>:
    <statement(s)>
elif <expr>:
    <statement(s)>
elif <expr>:
    <statement(s)>
    ...
else:
    <statement(s)>

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

name = 'Joe'
if name == 'Fred':
    print('Hello Fred')
elif name == 'Xander':
    print('Hello Xander')
elif name == 'Joe':
    print('Hello Joe')
elif name == 'Arnold':
    print('Hello Arnold')
else:
    print("I don't know who you are!")

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

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

Вот одна из возможных альтернатив приведенному выше примеру с использованием метода dict. get() :

names = {
    'Fred': 'Hello Fred',
    'Xander': 'Hello Xander',
    'Joe': 'Hello Joe',
    'Arnold': 'Hello Arnold'
}

print(names.get('Joe', "I don't know who you are!"))

print(names.get('Rick', "I don't know who you are!"))

Вспомните из статьи про словари Python, что метод dict. get () ищет в словаре указанный ключ и возвращает соответствующее значение, если оно найдено, или заданное значение по умолчанию, если его нет.

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

var  # Not defined

   
if 'a' in 'bar':
    print('foo')
elif 1/0:
    print("This won't happen")
elif var:
    print("This won't either")

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Adblock
detector