COP 1000c Lab Assignment 7
Copyright © 2018 Pearson Education, Inc.
C H A P T E R 3
Decision Structures and Boolean Logic
Copyright © 2018 Pearson Education, Inc.
Topics
- The if Statement
- The if-else Statement
- Comparing Strings
- Nested Decision Structures and the if-elif-else Statement
- Logical Operators
- Boolean Variables
- Turtle Graphics: Determining the State of the Turtle
Copyright © 2018 Pearson Education, Inc.
The if Statement
- Control structure: logical design that controls order in which set of statements execute
- Sequence structure: set of statements that execute in the order they appear
- Decision structure: specific action(s) performed only if a condition exists
- Also known as selection structure
Copyright © 2018 Pearson Education, Inc.
The if Statement (cont’d.)
- In flowchart, diamond represents true/false condition that must be tested
- Actions can be conditionally executed
- Performed only when a condition is true
- Single alternative decision structure: provides only one alternative path of execution
- If condition is not true, exit the structure
Copyright © 2018 Pearson Education, Inc.
The if Statement (cont’d.)
Copyright © 2018 Pearson Education, Inc.
The if Statement (cont’d.)
- Python syntax:
if condition:
Statement
Statement
- First line known as the if clause
- Includes the keyword if followed by condition
- The condition can be true or false
- When the if statement executes, the condition is tested, and if it is true the block statements are executed. otherwise, block statements are skipped
Copyright © 2018 Pearson Education, Inc.
Boolean Expressions and Relational Operators
- Boolean expression: expression tested by if statement to determine if it is true or false
- Example: a > b
- true if a is greater than b; false otherwise
- Relational operator: determines whether a specific relationship exists between two values
- Example: greater than (>)
Copyright © 2018 Pearson Education, Inc.
Boolean Expressions and Relational Operators (cont’d.)
- >= and <= operators test more than one relationship
- It is enough for one of the relationships to exist for the expression to be true
- == operator determines whether the two operands are equal to one another
- Do not confuse with assignment operator (=)
- != operator determines whether the two operands are not equal
Copyright © 2018 Pearson Education, Inc.
Boolean Expressions and Relational Operators (cont’d.)
Copyright © 2018 Pearson Education, Inc.
Boolean Expressions and Relational Operators (cont’d.)
- Using a Boolean expression with the > relational operator
Copyright © 2018 Pearson Education, Inc.
Boolean Expressions and Relational Operators (cont’d.)
- Any relational operator can be used in a decision block
- Example: if balance == 0
- Example: if payment != balance
- It is possible to have a block inside another block
- Example: if statement inside a function
- Statements in inner block must be indented with respect to the outer block
Copyright © 2018 Pearson Education, Inc.
The if-else Statement
- Dual alternative decision structure: two possible paths of execution
One is taken if the condition is true, and the other if the condition is false
- Syntax: if condition:
statements
else:
other statements
- if clause and else clause must be aligned
- Statements must be consistently indented
Copyright © 2018 Pearson Education, Inc.
The if-else Statement (cont’d.)
Copyright © 2018 Pearson Education, Inc.
The if-else Statement (cont’d.)
Copyright © 2018 Pearson Education, Inc.
Comparing Strings
- Strings can be compared using the == and != operators
- String comparisons are case sensitive
- Strings can be compared using >, <, >=, and <=
- Compared character by character based on the ASCII values for each character
- If shorter word is substring of longer word, longer word is greater than shorter word
Copyright © 2018 Pearson Education, Inc.
Comparing Strings (cont’d.)
Copyright © 2018 Pearson Education, Inc.
Nested Decision Structures and the if-elif-else Statement
- A decision structure can be nested inside another decision structure
- Commonly needed in programs
- Example:
- Determine if someone qualifies for a loan, they must meet two conditions:
- Must earn at least $30,000/year
- Must have been employed for at least two years
- Check first condition, and if it is true, check second condition
Copyright © 2018 Pearson Education, Inc.
Copyright © 2018 Pearson Education, Inc.
Nested Decision Structures and the if-elif-else Statement (cont’d.)
- Important to use proper indentation in a nested decision structure
- Important for Python interpreter
- Makes code more readable for programmer
- Rules for writing nested if statements:
- else clause should align with matching if clause
- Statements in each block must be consistently indented
Copyright © 2018 Pearson Education, Inc.
The if-elif-else Statement
- if-elif-else statement: special version of a decision structure
- Makes logic of nested decision structures simpler to write
- Can include multiple elif statements
- Syntax:
if condition_1:
statement(s)
elif condition_2:
statement(s)
elif condition_3:
statement(s)
else
statement(s)
Insert as many elif clauses
as necessary.
Copyright © 2018 Pearson Education, Inc.
The if-elif-else Statement (cont’d.)
- Alignment used with if-elif-else statement:
- if, elif, and else clauses are all aligned
- Conditionally executed blocks are consistently indented
- if-elif-else statement is never required, but logic easier to follow
- Can be accomplished by nested if-else
- Code can become complex, and indentation can cause problematic long lines
Copyright © 2018 Pearson Education, Inc.
Copyright © 2018 Pearson Education, Inc.
Logical Operators
- Logical operators: operators that can be used to create complex Boolean expressions
- and operator and or operator: binary operators, connect two Boolean expressions into a compound Boolean expression
- not operator: unary operator, reverses the truth of its Boolean operand
Copyright © 2018 Pearson Education, Inc.
The and Operator
- Takes two Boolean expressions as operands
- Creates compound Boolean expression that is true only when both sub expressions are true
- Can be used to simplify nested decision structures
- Truth table for
the and operator
| Expression | Value of the Expression |
| false and false | false |
| false and true | false |
| true and false | false |
| true and true | true |
Copyright © 2018 Pearson Education, Inc.
The or Operator
- Takes two Boolean expressions as operands
- Creates compound Boolean expression that is true when either of the sub expressions is true
- Can be used to simplify nested decision structures
- Truth table for
the or operator
| Expression | Value of the Expression |
| false and false | false |
| false and true | true |
| true and false | true |
| true and true | true |
Copyright © 2018 Pearson Education, Inc.
Short-Circuit Evaluation
- Short circuit evaluation: deciding the value of a compound Boolean expression after evaluating only one sub expression
- Performed by the or and and operators
- For or operator: If left operand is true, compound expression is true. Otherwise, evaluate right operand
- For and operator: If left operand is false, compound expression is false. Otherwise, evaluate right operand
Copyright © 2018 Pearson Education, Inc.
The not Operator
- Takes one Boolean expressions as operand and reverses its logical value
- Sometimes it may be necessary to place parentheses around an expression to clarify to what you are applying the not operator
- Truth table for the not operator
| Expression | Value of the Expression |
| true | false |
| false | true |
Copyright © 2018 Pearson Education, Inc.
Checking Numeric Ranges with Logical Operators
- To determine whether a numeric value is within a specific range of values, use and
Example: x >= 10 and x <= 20
- To determine whether a numeric value is outside of a specific range of values, use or
Example: x < 10 or x > 20
Copyright © 2018 Pearson Education, Inc.
Boolean Variables
- Boolean variable: references one of two values, True or False
- Represented by bool data type
- Commonly used as flags
- Flag: variable that signals when some condition exists in a program
- Flag set to False condition does not exist
- Flag set to True condition exists
Copyright © 2018 Pearson Education, Inc.
Turtle Graphics: Determining the State of the Turtle
- The turtle.xcor() and turtle.ycor() functions return the turtle's X and Y coordinates
- Examples of calling these functions in an if statement:
if turtle.xcor() > 100 and turtle.xcor() < 200:
turtle.goto(0, 0)
if turtle.ycor() < 0:
turtle.goto(0, 0)
Copyright © 2018 Pearson Education, Inc.
Turtle Graphics: Determining the State of the Turtle
- The turtle.heading() function returns the turtle's heading. (By default, the heading is returned in degrees.)
- Example of calling the function in an if statement:
if turtle.heading() >= 90 and turtle.heading() <= 270:
turtle.setheading(180)
Copyright © 2018 Pearson Education, Inc.
Turtle Graphics: Determining the State of the Turtle
- The turtle.isdown() function returns True if the pen is down, or False otherwise.
- Example of calling the function in an if statement:
if turtle.isdown():
turtle.penup()
if not(turtle.isdown()):
turtle.pendown()
Copyright © 2018 Pearson Education, Inc.
Turtle Graphics: Determining the State of the Turtle
- The turtle.isvisible() function returns True if the turtle is visible, or False otherwise.
- Example of calling the function in an if statement:
if turtle.isvisible():
turtle.hideturtle()
Copyright © 2018 Pearson Education, Inc.
Turtle Graphics: Determining the State of the Turtle
- When you call turtle.pencolor() without passing an argument, the function returns the pen's current color as a string. Example of calling the function in an if statement:
- When you call turtle.fillcolor() without passing an argument, the function returns the current fill color as a string. Example of calling the function in an if statement:
if turtle.pencolor() == 'red':
turtle.pencolor('blue')
if turtle.fillcolor() == 'blue':
turtle.fillcolor('white')
Copyright © 2018 Pearson Education, Inc.
Turtle Graphics: Determining the State of the Turtle
- When you call turtle.bgcolor() without passing an argument, the function returns the current background color as a string. Example of calling the function in an if statement:
if turtle.bgcolor() == 'white':
turtle.bgcolor('gray')
Copyright © 2018 Pearson Education, Inc.
Turtle Graphics: Determining the State of the Turtle
- When you call turtle.pensize() without passing an argument, the function returns the pen's current size as a string. Example of calling the function in an if statement:
if turtle.pensize() < 3:
turtle.pensize(3)
Copyright © 2018 Pearson Education, Inc.
Turtle Graphics: Determining the State of the Turtle
- When you call turtle.speed() without passing an argument, the function returns the current animation speed. Example of calling the function in an if statement:
if turtle.speed() > 0:
turtle.speed(0)
Copyright © 2018 Pearson Education, Inc.
Turtle Graphics: Determining the State of the Turtle
- See In the Spotlight: The Hit the Target Game in your textbook for numerous examples of determining the state of the turtle.
Copyright © 2018 Pearson Education, Inc.
Summary
- This chapter covered:
- Decision structures, including:
- Single alternative decision structures
- Dual alternative decision structures
- Nested decision structures
- Relational operators and logical operators as used in creating Boolean expressions
- String comparison as used in creating Boolean expressions
- Boolean variables
- Determining the state of the turtle in Turtle Graphics