Using elif for more options¶
We have used if
and else
to handle two possible options, but what could you do for if you want more than two options? What if you want to test if a value is negative, 0, or positive? One way to do this using multiple if
statements is shown below.
Run this several times and change the value of x each time. Try it with a positive number, a negative number, and 0 to check that it works correctly. Modify the code to take a number as input from the user instead.
Another way to choose between three options is to use if
followed by elif
and finally else
as shown below.
Which way is better? It turns out that beginners have an easier time understanding 3 if
statements. Experts prefer using if
, elif
, and else
since it takes less time to execute and makes it less likely that you will miss a value.
Mixed up programs
The following program should report which team won or if there was a tie. But the code has been mixed up. Drag it into the right order with the right indention.
You can use as many elif
statements as you need. You can only have one else
statement. What if you have scaled some data from 0 to 1 and want to know what quartile a value is in?
- x is in the first quartile - x <= .25
- This will only print if x is less then or equal to .25.
- x is in the second quartile - .25 < x <= .5
- This will print if the other if's were not true, and if x is less than or equal to .5. By moving lines 6-7 before lines 4-5 this will never print.
- x is in the third quartile - .5 < x <= .75
- This will print if the other if's are not true and if x is less than or equal to .75. So, moving lines 6-7 before lines 4-5 messes up what this code is intended to do and incorrectly prints that .5 is in the third quartile.
- x is in the fourth quartile - .75 < x <= 1
- This will only print if all of the other if's were false.
csp-13-4-5: What would be printed if you moved lines 6-7 before lines 4-5 and set x equal to .5?
Here’s the fortune teller code from before but now it is written using elif
and else
instead of just if
.
- 1
- It will have to test if
num
is equal to 1 and because that is false it will test ifnum
is equal to 2. - 2
- With the
elif
it won't execute the otherelif
's if one of them is true. - 5
- With
elif
it will test each until one of the conditions is true and then skip the rest. - 6
- There are only 5 logical expression here so it can't be more than 5.
csp-13-4-7: How many conditions (logical expressions) are checked in the code above if the user answered 2?