Python if elif else

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

Синтаксис

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

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

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

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

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

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

Отступы

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

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

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

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

Python табуляция (отступы)

Примеры

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

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

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

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

What is if…else statement in Python?

Decision making is required when we want to execute a code only if a certain condition is satisfied.

The statement is used in Python for decision making.

Python if Statement Syntax

if test expression:
    statement(s)

Here, the program evaluates the and will execute statement(s) only if the test expression is .

If the test expression is , the statement(s) is not executed.

In Python, the body of the statement is indicated by the indentation. The body starts with an indentation and the first unindented line marks the end.

Python interprets non-zero values as . and are interpreted as .

Example: Python if Statement

When you run the program, the output will be:

3 is a positive number
This is always printed
This is also always printed.

In the above example, is the test expression.

The body of is executed only if this evaluates to .

When the variable num is equal to 3, test expression is true and statements inside the body of are executed.

If the variable num is equal to -1, test expression is false and statements inside the body of are skipped.

The statement falls outside of the block (unindented). Hence, it is executed regardless of the test expression.

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

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

Читается это выражение так: если больше , равен , иначе – равен .

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

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

Пример:

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

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

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

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

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

Сравнение при помощи оператора != переменных одного и двух типов

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

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

x = 5
y = 5
c = x != y 
print(c)
# False

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

Теперь давайте обновим наш код. Мы объявим три разные переменные, причем только две из них будут иметь одинаковое значение.

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

Затем мы сравним переменные и вне предложения print и запишем результат в переменную . После этого используем значение этой переменной в print.

Наконец, мы объявим переменную строкового типа и сравним ее с целочисленной переменной a в предложении print.

a = 3
b = 3
c = 2
print(f'a is not equal to b = {a!= b}')
# a is not equal to b = False

f = a != c 
print(f"a is not equal to c = {f}")
# a is not equal to c = True

q = '3'
print(f'a is not equal to q = {a!= q}')
# a is not equal to q = True

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

Python if..elif..else in one line

Now as I told this earlier, it is not possible to use in one line using ternary expressions. Although we can hack our way into this but make sure the maximum allowed length of a line in Python is 79 as per

Syntax

We have this where we return expression based on the condition check:

Advertisement

if condition1:
    expr1
elif condition2:
    expr2
else:
    expr

We can write this in one-line using this syntax:

expr1 if condition1 else expr2 if condition2 else expr

In this syntax,

  • First of all is evaluated, if return then is returned
  • If returns then is evaluated, if return then is returned
  • If also returns then else is executed and is returned

As you see, it was easier if we read this in multi-line while the same becomes hard to understand for beginners.

We can add multiple in this syntax, but we must also adhere to PEP-8 guidelines

expr1 if condition1 else expr2 if condition2 else expr-n if condition-n else expr

Python Script Example-1

In this sample script we collect an integer value from end user and store it in «». The order of execution would be:

  • If the value of is less than then «» is returned
  • If the value of is greater than then «» is returned.
  • If both the condition return , then «» is returned
#!/usr/bin/env python3

b = int(input("Enter value for b: "))
a = "neg" if b <  else "pos" if b >  else "zero"

print(a)

The multi-line form of the code would be:

#!/usr/bin/env python3

b = int(input("Enter value for b: "))

if b < :
   a = "neg"
elif b > :
   a = "pos"
else:
   zero

print(a)

Output(when condition is )

# python3 /tmp/if_else_one_line.py
Enter value for b: -5
neg

Output(when condition is and condition is )

Advertisement

# python3 /tmp/if_else_one_line.py
Enter value for b: 5
pos

Output(when both and condition are )

# python3 /tmp/if_else_one_line.py
Enter value for b: 0
zero

Python script Example-2

We will add some more else blocks in this sample script, the order of the check would be in below sequence:

  • Collect user input for value which will be converted to integer type
  • If value of is equal to 100 then return «», If this returns then next condition would be executed
  • If value of is equal to 50 then return «», If this returns then next condition would be executed
  • If value of is equal to 40 then return «», If this returns then next condition would be executed
  • If value of is greater than 100 then return «», If this returns then next go to block
  • Lastly if all the condition return then return «»
#!/usr/bin/env python3

b = int(input("Enter value for b: "))

a = "equal to 100" if b == 100 else "equal to 50" if b == 50 else "equal to 40" if b == 40 else "greater than 100" if b > 100 else "less than 100"
print(a)

The multi-line form of this example would be:

#!/usr/bin/env python3

b = int(input("Enter value for b: "))

if b == 100:
   a = "equal to 100"
elif b == 50:
   a = "equal to 50"
elif b == 40:
   a = "equal to 40"
elif b > 100:
   a = "greater than 100"
else:
   a = "less than 100"

print(a)

Output:

# python3 /tmp/if_else_one_line.py
Enter value for b: 50
equal to 50

# python3 /tmp/if_else_one_line.py
Enter value for b: 110
greater than 100

# python3 /tmp/if_else_one_line.py
Enter value for b: -12
less than 100

# python3 /tmp/if_else_one_line.py
Enter value for b: 40
equal to 40

Python Elif Syntax

The syntax of Python Elif or else if statement is

The Python Elif or else if statement handle multiple statements effectively by executing them sequentially. It means, Python elseif will check for the first condition, if the condition is TRUE then it will execute the statements present in that block. If the condition is FALSE then Python elseif will check the Next one (Elif condition) and so on. There will be some situations where condition 1, condition 2 is TRUE, for example:

x= 20, y=10

Condition 1: x > y # TRUE

Condition 2: x != y # TRUE

In these situations, statements under the Condition 1 will be executed. Because Python ELIF conditions will only be executed if its previous IF or ELIF statement (else) fails.

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

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.

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!

Python if…elif…else Statement

Syntax of if…elif…else

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

The is short for else if. It allows us to check for multiple expressions.

If the condition for is , it checks the condition of the next block and so on.

If all the conditions are , the body of else is executed.

Only one block among the several blocks is executed according to the condition.

The block can have only one block. But it can have multiple blocks.

Example of if…elif…else

When variable num is positive, Positive number is printed.

If num is equal to 0, Zero is printed.

If num is negative, Negative number is printed.

Оператор 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», если все перечисленные выше условия не были выполнены.

if .. else statement

In Python if .. else statement, if has two blocks, one following the expression and other following the else clause. Here is the syntax.

Syntax:

 
if expression :
    statement_1
    statement_2
    ....
     else : 
   statement_3 
   statement_4
   ....

In the above case if the expression evaluates to true the same amount of indented statements(s) following if will be executed and if
the expression evaluates to false the same amount of indented statements(s) following else will be executed. See the following example. The program will print the second print statement as the value of a is 10.

Output:

Value of a is 10

Flowchart:

Python if else in one line

Syntax

The general syntax of single if and else statement in Python is:

if condition:
   value_when_true
else:
   value_when_false

Now if we wish to write this in one line using ternary operator, the syntax would be:

value_when_true if condition else value_when_false

In this syntax, first of all the is evaluated.

  • If condition returns then is returned
  • If condition returns then is returned

Similarly if you had a variable assigned in the general based on the condition

if condition:
    value = true-expr
else:
    value = false-expr

The same can be written in single line:

Advertisement

value = true-expr if condition else false-expr

Here as well, first of all the condition is evaluated.

  • if condition returns then is assigned to value object
  • if condition returns then is assigned to value object

For simple cases like this, I find it very nice to be able to express that logic in one line instead of four. Remember, as a coder, you spend much more time reading code than writing it, so Python’s conciseness is invaluable.

Some important points to remember:

  • You can use a ternary expression in Python, but only for expressions, not for statements
  • You cannot use Python block in one line.
  • The name «ternary» means there are just 3 parts to the operator: , , and .
  • Although there are hacks to modify into and then use it in single line but that can be complex depending upon conditions and should be avoided
  • With , only one of the expressions will be executed.
  • While it may be tempting to always use ternary expressions to condense your code, realise that you may sacrifice readability if the condition as well as the true and false expressions are very complex.

Python Script Example

This is a simple script where we use comparison operator in our if condition

  • First collect user input in the form of integer and store this value into
  • If is greater than or equal to then return «» which will be condition
  • If returns i.e. above condition was not success then return «»
  • The final returned value i.e. either «» or «» is stored in object
  • Lastly print the value of value
#!/usr/bin/env python3

b = int(input("Enter value for b: "))

a = "positive" if b >=  else "negative"

print(a)

The multi-line form of this code would be:

#!/usr/bin/env python3

b = int(input("Enter value for b: "))

if b >= :
   a = "positive"
else:
   a = "negative"

print(a)

Output:

# python3 /tmp/if_else_one_line.py
Enter value for b: 10
positive

# python3 /tmp/if_else_one_line.py
Enter value for b: -10
negative

Оператор if elif else

Ключевое слово является сокращением от .

Оператор Python принимает следующую форму:

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

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

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

Добавим в предыдущий скрипт предложение :

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

Более сложный пример использования != в Python

Наконец, протестируем оператор сравнения на сложном примере.

Мы инициализировали класс с именем . Внутри этого класса мы инициализировали переменную , имеющую значение 0. Другая переменная — — была инициализирована со значением .

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

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

Далее были созданы три объекта для отправки значений конструктору.

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

class Test:
    i = 0
    data = ''
    def __init__(self, i, s):
        self.i = i
        self.data = s
    def __ne__(self, other):
        if type(other) != type(self):
            return True
        if self.data != other.data:
            return True
        else:
            return False

t1 = Test(1, 'Aqsa')
t2 = Test(2, 'Aqsa')
t3 = Test(3, 'Yasin')
print(t1 != t2)
print(t2 != t3)

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

Операторы оцениваются слева направо

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

Мы также переопределим функцию __bool __() для вывода значения «id».

def my_bool(data):
    print('Data bool method called, id =', data.id)
    return True if data.id > 0 else False


Data.__bool__ = my_bool

d1 = Data(10)
d2 = Data(-20)
d3 = Data(20)

# evaluated from left to right, confirmed from the __bool__() print statement
if d1 and d2 or d3:
    print('At least one of them have a positive id.')

Вывод:

Data bool method called, id = 10
Data bool method called, id = -20
Data bool method called, id = 20
At least one of them have a positive id.

Обратите внимание, что логическое значение сначала вычисляется для d1, тем самым подтверждая, что выполнение происходит слева направо

Basic Python if Command Example for String Comparison

Similar to the previous example, we can also use Python if command for string comparison as shown in the example below.

# cat if2.py
code = raw_input("What is the 2-letter state code for California?: ")
if code == 'CA':
  print("You passed the test.")
print("Thank You!")

In the above:

  • 1st line: Here we are getting the raw input from the user and storing it in the code variable. This will be stored as string.
  • 2nd line: In this if command, we are comparing whether the value of the code variable is equal to the string ‘CA’. Please note that we have enclosed the static string value in single quote (not double quote). The : at the end is part of the if command syntax.
  • 3rd line: As explained in the previous example, this line will get executed when the if command condition is true, as this line has indentation with spaces at the beginning.
  • 4th line: This will get executed whether the if command condition is true or false.

The following is the output of the above example code for both if condition true and false.

# python if2.py
What is the 2-letter state code for California?: CA
You passed the test.
Thank You!

# python if2.py
What is the 2-letter state code for California?: NV
Thank You!
Добавить комментарий

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

Adblock
detector