Boolean Values and Expressions
A boolean expression is any expression that evaluates to True or False; a condition is a boolean expression inside a conditional statement; a conditional statement controls program flow based on that condition.
Three Related Ideas
Boolean values are the two values True and False. A boolean expression is any expression that evaluates to one of those values. A condition is a boolean expression used inside a conditional statement. The conditional statement uses that condition to control which part of a program runs.
Classifying a Boolean Expression
Consider the expression score >= 50.
- 1Expression
score >= 50 is an expression because it compares a value with 50.
- 2Result
The comparison evaluates to either True or False, so it is a boolean expression.
- 3Condition
When the expression is placed in a conditional statement, it becomes the condition that controls the branch.
The same boolean expression can be described as a condition when it is used to control a conditional statement.
Building Conditions
Comparison operators build boolean expressions by comparing values. The comparison operators are ==, !=, >, <, >=, and <=. Logical operators combine or transform boolean expressions: and combines conditions, or combines alternatives, and not transforms a boolean result.
Combining Comparisons
Form a condition meaning that score is at least 50 and attendance is at least 80.
- 1First comparison
score >= 50 produces a boolean result.
- 2Second comparison
attendance >= 80 produces another boolean result.
- 3Combination
The logical operator and combines the two comparisons into one compound condition.
score >= 50 and attendance >= 80 expresses the requirement that both comparisons be true.
Headers and Indented Bodies
A conditional is a compound statement. Its header ends with a colon, and its body is indented. The indented body is the group of statements controlled by the header. In Python, indentation is syntactically significant: it defines the scope of the conditional body.
When the condition is True, execution can enter the indented body. When the condition is False, that body is not the selected path, and execution proceeds according to the conditional structure. The indentation is therefore not merely visual formatting; it identifies which statements belong to the compound statement.
Branching Patterns
Branches are alternative execution paths. A simple conditional selects whether a body runs. A chained conditional uses multiple elif clauses to provide multiple alternatives. A nested conditional places one conditional inside another, so a second decision occurs within the first conditional's body. A guarded conditional checks an early condition before allowing later work to proceed.
| Pattern | Structure | Purpose |
|---|---|---|
| Chained conditional | Multiple elif clauses | Offer multiple alternative branches |
| Nested conditional | A conditional inside another conditional | Make a second decision within an already selected branch |
| Guarded conditional | An early condition before later work | Allow later work only when the guard condition permits it |
Branching patterns differ in how decisions are arranged.
Choosing a Branching Pattern
A program must first check whether a user is eligible, then choose among several eligibility categories.
- 1Protect the later decision
Use the eligibility check as an early guard so the later category decision is considered only after the required condition passes.
- 2Choose among alternatives
Use a chained conditional when several mutually alternative categories must be considered.
- 3Consider nesting
Use a nested conditional when one decision belongs inside a branch selected by another decision.
The pattern depends on the relationship between the decisions: alternatives suggest chaining, a decision within a branch suggests nesting, and an early permission check suggests guarding.
Short-Circuit Evaluation
A compound condition can contain multiple boolean expressions connected by logical operators. Short-circuit evaluation means that evaluation can stop as soon as the result of the whole compound condition is determined. With and, a False result is enough to determine that the combined condition is False. With or, a True result is enough to determine that the combined condition is True. Expressions to the right of that decisive result are not evaluated.
What do you think happens?
In the compound condition False and another_expression, must another_expression be evaluated to determine the result?
Reveal answer
No, the False result already determines the and condition.
With and, one False part is sufficient to make the combined condition False, so short-circuit evaluation can stop before the remaining expression is evaluated.
Short-circuiting affects execution, not just the final boolean value. The order of expressions matters because an expression later in the condition may never run. This is why a condition can use an earlier check as a guard for a later check.
Mistakes Beginners Make
Common mistake Treating a boolean expression, a condition, and a conditional statement as identical terms.
What it looks likeCalling every use of score >= 50 a conditional statement.
Why it failsThe expression produces True or False, the condition is that expression in a conditional, and the conditional statement controls program flow.
Do this insteadName each part according to its role: expression, condition, or statement.
Common mistake Ignoring the header and indented body structure.
What it looks likeAssuming every following statement belongs to the conditional.
Why it failsA compound statement has a header ending with a colon and an indented body. Indentation defines the body's scope.
Do this insteadCheck which statements are indented under the header and which statements return to the surrounding level.
Common mistake Using several comparisons without a logical operator when one combined condition is intended.
What it looks likeTreating two separate comparisons as automatically combined.
Why it failsThe logical operators and, or, and not are the tools for combining or transforming boolean expressions.
Do this insteadState the relationship explicitly with and, or, or not.
Common mistake Assuming every part of a compound condition is always evaluated.
What it looks likeExpecting the expression after a decisive False with and to run.
Why it failsShort-circuit evaluation can stop when the result of the compound condition is already determined.
Do this insteadTrace the expressions from left to right and ask whether the current result already determines the whole condition.
Practice and Summary
For each prompt, identify the boolean expressions, the condition, and the branching pattern involved. Then explain where short-circuit evaluation could stop evaluation: a compound condition uses and; a first expression evaluates to False; the second expression is more work.
Hints
- Separate the individual comparisons before considering the logical operator.
- Ask whether the whole result is already known after the first expression.
- Decide whether the control flow uses alternatives, a decision inside a branch, or an early guard.
- 1Boolean expressions evaluate to True or False. A condition is a boolean expression used by a conditional statement to control program flow. Comparison operators create boolean results, while and, or, and not combine or transform them. Compound statements have a header ending with a colon and an indented body whose scope is defined by indentation. Chained, nested, and guarded conditionals arrange branches in different ways. Short-circuit evaluation can stop a compound condition before every expression is evaluated.
At a glance
- A boolean expression produces True or False; a condition is that expression used in a conditional statement.
- Comparison operators build boolean expressions, and logical operators combine or transform them.
- A compound statement has a colon-terminated header and an indented body; indentation defines scope in Python.
- Chained, nested, and guarded conditionals provide different arrangements of alternative control flow.
- Short-circuit evaluation stops checking a compound condition when its final result is already determined.