Python if else, if elif else, nested if for decision making

Оператор elif

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

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

Рассмотрим его работу на примере программы account.py. При помощи оператора elif можно создать три условия:

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

Оператор elif должен находиться между операторами if и else:

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

  • Если значение 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 из предыдущего примера останется без изменений.

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

  • Сравнивает значение переменной grade со всеми выражениями. Если значение переменной не отвечает условию выражения, оно переходит к следующему выражению.
  • Если значение отвечает условию одного из выражений, оно не передаётся дальше. Оператор выполняет соответствующее действие (в данном случае выводит на экран сообщение об оценке: A grade, B grade и т.д.).
  • Если значение переменой не отвечает условиям операторов if и elif, оно переходит к оператору else, который отображает сообщение Failing grade.

if statement

The Python if statement is same as it is with other programming languages. It executes a set of statements conditionally, based on the value of a logical expression.

Here is the general form of a one way if statement.

Syntax:

if expression :
    statement_1 
    statement_2
    ....

In the above case, expression specifies the conditions which are based on Boolean expression. When a Boolean expression is evaluated it produces either a value of true or false. If the expression evaluates true the same amount of indented statement(s) following if will be executed. This group of the statement(s) is called a block.

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

Nested if Statements

When you have an if statement inside another if statement, this is called nesting in the programming world. It doesn’t have to always be a simple if statement but you could use the concept of if, if-else and even if-elif-else statements combined to form a more complex structure.

Lets code for the example discussed above:

Notice the use of in the code above? It is used so as to evaluate ‘Science’ and ‘science’ as the same coursework, and same goes for ‘English’ and ‘english’. You can make use of boolean statements such as or, and to combine multiple conditions together. But you have to be careful to understand the boolean output of such combined statements to fully realise the flow of control of your program.

We can rewrite the code above to check for the scores in the same statement, however this does make the code hard to read and the statements hard to debug sometimes.

Voila!

In this tutorial, you have tackled one of the major control flow mechanisms available in Python. You have worked with an example in multiple levels to see the variations of the humble if statement in action. To learn more about Python check out DataCamp’s Intro to Python for Data Science course.

Single test: if-else Statement

The if-else statement is used to code the same way you would use it in the English language. The syntax for the if-else statement is:


Source: python by Programiz

Lets try to work on the code from above, and redefine the problem: When recording the score for a certain coursework, you want to add together the points for the theory part and the practical part to get the total score. If the total score is less than 100 — you want to display a ‘Score okay’ message and if it is not then a warning like before.

Tip: If you only have a line of code to be executed rather than multiple lines in the code following the condition, you can place it all in the same line. This is not a rule but just a common practise amongst coders. Rewriting the code from above in this style:

Now imagine a case where one of the score exceeds 50, but the total is still less than 100. What do you think would happen then?

This is wrong, since you know that the maximum limit for individual scores for theory or practical should not exceed 50. How can you repesent this in code? The ans: if-elif-else statement.

if .. elif .. else statement

Sometimes a situation arises when there are several conditions. To handle the situation Python allows adding any number of elif clause after an if and before an else clause. Here is the syntax.

Syntax:

 
if expression1 :
         statement_1
         statement_2
         ....   
   
     elif expression2 : 
     statement_3 
     statement_4
     ....     
   elif expression3 : 
     statement_5 
     statement_6
     ....................    
   else : 
     statement_7 
     statement_8

In the above case Python evaluates each expression (i.e. the condition) one by one and if a true condition is found the statement(s) block under that expression will be executed. If no true condition is found the statement(s) block under else will be executed. In the following example, we have applied if, series of elif and else to get the type of a variable.

Output:

Type of the variable is Complex

Flowchart:

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

Синтаксис

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

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

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

Принцип работы оператора выбора в Python

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

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

Отступы

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

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

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

Примеры

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

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

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

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

Nested if .. else statement

In general nested if-else statement is used when we want to check more than one conditions. Conditions are executed from top to bottom and check each condition whether it evaluates to true or not. If a true condition is found the statement(s) block associated with the condition executes otherwise it goes to next condition. Here is the syntax :

Syntax:

 
     if expression1 :
         if expression2 :
          statement_3
          statement_4
        ....
      else :
         statement_5
         statement_6
        ....
     else :
	   statement_7 
       statement_8

In the above syntax expression1 is checked first, if it evaluates to true then the program control goes to next if — else part otherwise it goes to the last else statement and executes statement_7, statement_8 etc.. Within the if — else if expression2 evaluates true then statement_3, statement_4 will execute otherwise statement_5, statement_6 will execute. See the following example.

Output :

You are eligible to see the Football match.
Tic kit price is $20

In the above example age is set to 38, therefore the first expression (age >= 11) evaluates to True and the associated print statement prints the string «You are eligible to see the Football match». There after program control goes to next if statement and the condition ( 38 is outside <=20 or >=60) is matched and prints «Tic kit price is $12».

Flowchart:

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.

Python if else if Command Example

In Python, if else if is handled using if elif else format.

The following example shows how to use if..elif..else command in Python.

# cat if6.py
code = raw_input("Type a 2-letter state code that starts with letter C: ")
if code == 'CA':
  print("CA is California")
elif code == 'CO':
  print("CO is Colorado")
elif code == 'CT':
  print("CT is Connecticut")
else:
  print("Invalid. Please enter a valid state code that starts with letter C")
print("Thank You!")

In the above:

  • When the first if code == ‘CO’ condition fails, then it goes to the next elif command.
  • When the elif code == ‘CO’ condition fails, then it goes to the next elif code command.
  • When the elif code == ‘CT’ condition fails, then it just executes whatever is available as part of the final else: block.
  • At any point when the 1st if condition becomes true, or any one of the remaining elif condition becomes true, then it executes the statement that is part of its block and stops checking further condition.
  • This also means that when any of the if condition or elif condition becomes true, the statement that is part of the else block will not get executed.
  • Also, just like previous example, the colon at the end of if, elif, else command is part of the Python syntax, which should be specified.

The following is the output when the first if condition becomes true.

# python if6.py
Type a 2-letter state code that starts with letter C: CA
CA is California
Thank You!

The following is the output when the first elif condition becomes true.

# python if6.py
Type a 2-letter state code that starts with letter C: CO
CO is Colorado
Thank You!

The following is the output when the second elif condition becomes true.

# python if6.py
Type a 2-letter state code that starts with letter C: CT
CT is Connecticut
Thank You!

The following is the output when the if condition is false, and all the remaining elif condition is also false. Here this, executes the else block.

# python if6.py
Type a 2-letter state code that starts with letter C: NV
Invalid. Please enter a valid state code that starts with letter C
Thank You!
Добавить комментарий

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