6.9. Chained conditionals¶

Python provides an alternative way to write nested selection such as the one shown in the previous section. This is sometimes referred to as a chained conditional.

if x < y:
    print("x is less than y")
elif x > y:
    print("x is greater than y")
else:
    print("x and y must be equal")

The flow of control can be drawn in a different orientation but the resulting pattern is identical to the one shown above.

../_images/flowchart_chained_conditional.png

elif is an abbreviation of else if. Again, exactly one branch will be executed. There is no limit of the number of elif statements but only a single (and optional) final else statement is allowed and it must be the last branch in the statement.

../_images/conditionals_overview.png

Each condition is checked in order. If the first is false, the next is checked, and so on. If one of them is true, the corresponding branch executes, and the statement ends. Even if more than one condition is true, only the first true branch executes.

Here is the same program using elif.

The following image highlights different kinds of valid conditionals that can be used. Though there are other versions of conditionals that Python can understand (imagine an if statement with twenty elif statements), those other versions must follow the same order as seen below.

shows a unary conditiona, a binary conditional, a conditional with if, elif, else, and a conditional with if, elif, and elif.

Here is a turtle example that uses chained conditionals.

The above example combines a for loop with a set of conditional statements. Here, we loop through a list of colors and each iteration checks to see what amy’s pen color is. Depending on the pen color, the turtle will move in a certain direction, for a certain distance. This example also demonstrates a common pattern for chained conditionals in which all of the expected things are covered by the various elif branches, and the else is used to notify the programmer with a console message that something unexpected has occurred. In this case, we expected only the four colours purple, yellow, orange, and pink. If we get something else, we print a message out (and typically print out the unexpected item), which in this case helps us notice two things: there is a typo and “Purple” is mispelled in one spot, and there is a “Blue” in the list, and so maybe we want to add code to handle that color. You may think that adding such an else clause is unnecessary because you are sure your code works correctly, but it’s helpful more often than you think.

Check your understanding

Create one conditional to find whether “false” is in string str1. If so, assign variable output the string “False. You aren’t you?”. Check to see if “true” is in string str1 and if it is then assign “True! You are you!” to the variable output. If neither are in str1, assign “Neither true nor false!” to output.

Create an empty list called resps. Using the list percent_rain, for each percent, if it is above 90, add the string ‘Bring an umbrella.’ to resps, otherwise if it is above 80, add the string ‘Good for the flowers?’ to resps, otherwise if it is above 50, add the string ‘Watch out for clouds!’ to resps, otherwise, add the string ‘Nice day!’ to resps. Note: if you’re sure you’ve got the problem right but it doesn’t pass, then check that you’ve matched up the strings exactly.

We have created conditionals for you to use. Do not change the provided conditional statements. Find an integer value for x that will cause output to hold the values True and None. (Drawing diagrams or flow charts for yourself may help!)

You have attempted of activities on this page