Skip to main content

Section 4.3 Omitting the else Clause: Unary Selection

Another form of the if statement is one in which the else clause is omitted entirely. This creates what is sometimes called unary selection. In this case, when the condition evaluates to True, the statements are executed. Otherwise the flow of execution continues to the statement after the body of the if. Here is what the flowchart looks like:
What would be printed if the value of x is negative? Try it.

Note 4.3.1.

This form of if statement is much less common than the if-else statement you learned about in Section 4.2.

Checkpoint 4.3.2.

    What does the following code print?
    x = -10
    if x < 0:
        print("The negative number ",  x, " is not valid here.")
    print("This is always printed")
    
    a.
    This is always printed
    
    b.
    The negative number -10 is not valid here
    This is always printed
    
    c.
    The negative number -10 is not valid here
    
  • Output a
  • Because -10 is less than 0, Python will execute the body of the if statement here.
  • Output b
  • Python executes the body of the if block as well as the statement that follows the if block.
  • Output c
  • Python will also execute the statement that follows the if block because it is not enclosed in an else block, but rather just a normal statement.
  • It will cause an error because every if must have an else clause.
  • It is valid to have an if block without a corresponding else block (though you cannot have an else block without a corresponding if block).

Checkpoint 4.3.3.

    Will the following code cause an error?
    x = -10
    if x < 0:
        print("The negative number ",  x, " is not valid here.")
    else:
        print(x, " is a positive number")
    else:
        print("This is always printed")
    
  • No
  • Every if block must have exactly one corresponding else block. You will see how to make a chain of conditions in a later section.
  • Yes
  • This will cause an error because the second else block is not attached to a corresponding if block.
If you are not comfortable with the unary if and are of the opinion that every if should always have an else, Python has you covered with a special statement called pass, which means “do nothing”.
Here is a program with a unary selection:
number = int(input("Enter a non-negative number: "))

if number < 0:
    print("Sorry, negative numbers are not allowed.")
    
print("Your number was", number)
And here is the same program using pass so that we can have an else clause to go with the if:
number = int(input("Enter a non-negative number: "))

if number < 0:
    print("Sorry, negative numbers are not allowed.")
else:
    pass

print("Your number was", number)
You can copy and paste these programs into this activecode area to try them out and see that they do the same thing.