HomeSearch

Python If Examples: Elif, Else

Use the if, elif and else-statements. Write expressions and nested ifs.
If. The bee moves through the warm air. A tree's leaves shift in the wind. The bee makes many decisions. It judges each one to optimize its outcome.
With an if-statement, we test a condition. Like the bee we make a decision. With keywords (and, not, or) we modify the expressions within an if.
An example. An if-statement can be followed by an elif-statement and an else-statement. The elif and else parts are optional. The if can stand alone and have no elif or else.

If: This is followed by a colon character. Its expression is evaluated to true or false.

Elif: This is the same as if, but it must come after if and before else. It can come at the end.

Else: It must come at the end. It has no expression to evaluate. It is executed when if and elif evaluate to false.

Tip: Blocks of code within if, elif and else scopes must have an additional level of indentation. This program uses 4 spaces.

Python program that uses if-statements def test(n): if n == 0: print("None") elif n < 0: print("Low") else: # Handle values greater than zero. if n > 100: print("Out of range") else: print("High") test(-1) test(0) test(1) test(1000) Output Low None High Out of range
Same line. An if-statement can be on the same line as its body. This only works if there is one only statement in the body. A syntax error occurs otherwise.

Often: Indenting the statements, as in this example, is visually helpful. This improves readability.

Tip: You can mix same-line statements with multiple-line blocks in the same if-else chain. The goal is easy-to-read code.

Python program that uses same-line if # A variable. a = 1 # Test variable. if a == 1: print("1") elif a == 2: print("2") Output 1
In keyword. Collections such as dictionaries can be used with the if-statement. With a dictionary, the in keyword is used in an if-statement. We test the collection for a key's existence.In
Python program that uses if with dictionary birds = {"parakeet": 1, "parrot": 2} if "parrot" in birds: print("Found") Output Found
And, or. The && and || operators are not available in Python. We use instead the "and" and "or" keywords. This syntax is easier to read. We can use parentheses to form expressions.

Note: These if-statements have expressions that use "and" or "or." They all evaluate to true, and the inner print statements are reached.

Tip: Expressions can be even more complex. And you can call methods and use them instead of variables.

Tip 2: If-statements can also be nested. And sometimes it is possible to change complex expressions into a simpler if-else chain.

Python program that uses logical operators a = 1 b = 2 if a == 1 and b == 2: print(True) if a == 0 or b == 2: print(True) if not (a == 1 and b == 3): print(True) if a != 0 and b != 3: print(True) Output True True True True
Not keyword. This is used in ifs. It causes false expressions to evaluate to true ones. It comes before some expressions, but for "in" expressions, we use the "not in" construct.Not

Caution: For the first example of "not" here, I recommend instead using the != operator. This style is more familiar to many programmers.

Python program that uses not number = 1 # See if number is not equal to 2. if not number == 2: print("True") birds = {"cormorant" : 1, "cardinal" : 2} # See if string not in collection. if "automobile" not in birds: print("Not found") Output True Not found
Store expressions. If-statements can become complex. Often repetition is at fault. The same variables, in the same expressions, are tested many times.

Result: We can store the result of an expression in a variable. Then, we test the variable.

Tip: This reduces repetition. It may also improve processing speed: fewer comparisons are done.

Here: We store the result of an expression in the "all" variable. We then test it twice.

Python program that stores expression result, variable a = 1 b = 2 c = 3 # Store result in expression. all = a == 1 and b == 2 and c == 3 # Test variable. if all: print(1) # Use it again. if all: print(2) Output 1 2
Tuple. The if-statement is helpful with a tuple. In this example, we use a tuple directly inside the if-statement. The method test() prints "Match" if its argument is 0, 2 or 4.Tuple
Python program that uses tuple, if-statement def test(x): # Test x with tuple syntax. if x in (0, 2, 4): print("Match") else: print("Nope") test(0) test(1) test(2) Output Match x = 0 Nope x = 1 Match x = 2
Truth. Let us consider the truth of things. Python considers some values True, in an if-statement, and others false. The "None" value is False, and a class instance is True.

Negative 1: This evaluates to True. Nonzero numbers, like -1 and 1 are considered True.

Zero: This is False. Zero is the only False integer—all others, negative and positive, are considered True.

None: This is also False. Many methods return None when they find no answer. We can directly test these in an if.

Class: A Class instance is considered True. So if we test a new class instance, we will enter the if-block.

Empty list: The [] characters denote an empty list. Python evaluates zero-element collections to False.

Python program that tests values for true or false # An empty class for testing. class Box: pass # Some values to test. values = [-1, 0, 1, None, Box(), []] # See if the values are treated as "true" or "false". for value in values: if value: print("True ", end="") else: print("False", end="") # Display value. print("... ", value) Output True ... -1 False... 0 True ... 1 False... None True ... <__main__.Box object at 0x01984f50> False... []
True, False. Programs can always access the True and False constants. We can use True and False in ifs to make our logic clearer. This code makes explicit what value we are comparing.
Python program that uses True, False value1 = 10 value2 = 10 # See if these two values are equal. equal = value1 == value2 # Test True and False constants. if equal == True: print(1) if equal != False: print(2) Output 1 2
Method. Often we test variables directly in if-statements. But we can test the result of methods. This can simplify complex logic. Here, we invoke result() in if-statements.

Caution: For predicate methods, where a truth value is returned, side effects (like a field assignment) can lead to confusing code.

Python program that uses method in if def result(a): if a == 10: return True # Use method in an if-statement condition. if result(10): print("A") if not result(5): print("B") Output A B
Is-keyword. This tests identity. Every object (like integers, classes) has an id. When the ids of two objects are equal, their identities too are equal. And the is-test will return True.

Quote: The operators "is" and "is not" test for object identity: "x is y" is true if and only if "x" and "y" are the same object (Python help).

Python program that uses is class Bird: pass # Create two separate objects. owl = Bird() parrot = Bird() # The objects are not identical. if owl is not parrot: print(False, id(owl), id(parrot)) # These objects are identical. copy = owl if copy is owl: print(True, id(copy), id(owl)) Output False 4353337736 4353337792 True 4353337736 4353337736
SyntaxError. When comparing two values in an if-statement, two equals signs are required. Python reports a compile-time error when only one is found. One equals sign means an assignment.

Note: The programs with this problem can never be executed. This is helpful: it prevents invalid programs from causing a headache.

Python program that causes SyntaxError value = 100 # This should have two equals signs! if value = 1000: print(True) Output File "C:\programs\file.py", line 6 if value = 1000: ^ SyntaxError: invalid syntax
Reorder. The and-operator short-circuits. This means when a sub-expression evaluates to false, no further ones are evaluated. We can exploit this principle to improve speed.

Here: A list contains four sub-lists. In the value pairs, the first element differs most: there are three unique first numbers.

Value 2: This is always 1 in the pairs. It is least specific when checking the pairs.

So: To find pairs with both values set to 1, we should first check the most specific value—the first one.

Python program that optimizes if-checks values = [[1, 1], [2, 1], [1, 1], [3, 1]] for pair in values: # We test the first part of each list first. # ... It is most specific. # ... This reduces total checks. if pair[0] == 1 and pair[1] == 1: print(True) Output True True
Two comparisons. We can use two greater-than or less-than operators in a single expression. So we can see if a number is between 6 and 4.

Also: The "greater than or equal to" operator (and less than or equal to) are available here.

Python program that uses two comparisons value = 5 # Use two comparison operators to test for a range of values. if 6 > value > 4: print("Value is between 6 and 4") if 4 < value < 10: print("Value is between 4 and 10") Output Value is between 6 and 4 Value is between 4 and 10
Benchmark. If-statements can be written in many ways. We test an if that checks a variable against a tuple of three values. We then time an if-elif construct that does the same thing.

Result: The syntax that uses (1, 2, 3) was faster than the form that uses if and two elifs. The tuple-style syntax is efficient.

Python program that benchmarks if, tuple import time print(time.time()) # Version that uses tuple. v = 0 i = 0 x = 2 while i < 10000000: if x in (1, 2, 3): v += 1 i += 1 print(time.time()) # Version that uses if-elif. v = 0 i = 0 while i < 10000000: if x == 1: v += 1 elif x == 2: v += 1 elif x == 3: v += 1 i += 1 print(time.time()) Output 1361579543.768 1361579547.067 Tuple syntax = 3.23 s 1361579550.634 If-elif = 3.57 s
Control flow is a key concept in programs. Constructs such as loops and the if-statement manipulate control flow inside methods. And methods themselves influence flow outside this scope.
A review. The if, elif and else-statements are used in nearly every program. The else-statement is used with loop constructs. If a loop never iterates once, the else is reached.
© 2007-2019 Sam Allen. Every person is special and unique. Send bug reports to info@dotnetperls.com.
Home
Dot Net Perls