6.12. Group Work - Loops (For, Range, While)¶
It is best to use a POGIL approach with the following. In POGIL students work in groups on activities and each member has an assigned role. For more information see https://cspogil.org/Home.
Note
If you work in a group, have only one member of the group fill in the answers on this page. You will be able to share your answers with the group at the bottom of the page.
A loop allows you to execute the same statements multiple times. Python has two
kinds of loop structures: for
loops, which iterate over the items of a
sequence, and while
loops, which continue to execute as long as a condition is true.
Content Learning Objectives
After completing this activity, students should be able to:
Explain the syntax and the purpose of a
for
statement.Predict how
range()
works given 1, 2, or 3 arguments.Identify the three main components of a
while
loop.
Process Skill Goals:
During the activity, students should make progress toward:
Tracing the execution of while/for loops and predict their final output (Critical Thinking).
6.12.1. for Statements¶
A for
loop executes the same block of code “for each item in a sequence.”
Run this code to see what it prints.
- 0
- Incorrect! Remember, the body of a "for" loop executes as many times as there are items in a sequence. Try again.
- 1
- Incorrect! Remember, the body of a "for" loop executes as many times as there are items in a sequence. Try again.
- 2
- Incorrect! Remember, the body of a "for" loop executes as many times as there are items in a sequence. Try again.
- 3
- Correct! There are three items in the sequence [2, 7, 1], so the body of the "for" loop executes 3 times.
- 4
- Incorrect! The question is asking only about the indented line of code under the "for" loop, so Line 4 does not count. Try again.
Q-2: How many times does the indented line of code execute under the for
loop?
- 0
- Incorrect! After the "for" loop terminates (finishes executing), the program continues to execute the non-indented lines of code beneath it. Try again.
- 1
- Correct! The not indented line of code executes only once, as it is not part of the "for" loop and therefore does not execute multiple times.
- 2
- Incorrect! The absence of an indent in Line 4 means that it is not part of the "for" loop. Try again.
- 3
- Incorrect! The absence of an indent in Line 4 means that it is not part of the "for" loop. Try again.
- 4
- Incorrect! The absence of an indent in Line 4 means that it is not part of the "for" loop. Try again.
Q-3: How many times does the line of code NOT indented execute after the for
loop?
-
Q-4: Match each execution of Line 3 to the value "x" has after Line 3 is executed.
Keep trying!
- 1st time
- x = 2
- 2nd time
- x = 7
- 3rd time
- x = 1
-
Q-5: Imagine that the list [2, 7, 1] from the code above was modified to one of the lists below. Match each new list to the amount of times it would make the "for" loop execute.
Keep trying!
- [5, -7, 0]
- 3 times
- [3, 2, 1, 0]
- 4 times
- [4, 4]
- 2 times
- [8]
- 1 time
In general, the length of the list determines the number of times that the loop repeats.
The value of the variable x
is selected from the list. Each time the loop runs, the
next value from the list is assigned to x
.
Before your for
statement, you can assign your list to a variable and your program
will run the same way:
Run this code to see what it prints.
In addition, for
loops can be used with strings:
Run this code to see what it prints.
With strings, a for
statement iterates over each character in the string.
The length of the string determines how many times the body of the loop will run.
for
loops can also handle many other data types, like tuples and dictionaries.
Experiment on your own to see this in action!
6.12.2. The range Function¶
The Python range
function will generate a list of numbers. The range
function
can take up to three numbers as arguments.
Run this code to see what it prints.
The first line of output describes the range as a function, whereas the second line
shows the actual range of values as a list by using the list
function.
If the argument of the range
function specifies a single number, like range(x)
,
the first number listed will be 0, the last number listed will be x - 1, and there
will be x numbers in the list.
If the argument of the range
function specifies two numbers, like range(x, y)
,
the first number listed will be x, the last number listed will be y - 1, and there will
be y - x numbers in the list.
If the argument of the range
function specifies three numbers, like range(x, y, z)
,
the first number listed will still be x, just like the two parameter version. The third
argument represents how much to increment the number by each time. To calculate how many
numbers will be in the list, take the result of (y - x) / z and round it up to the nearest
whole number.
- for i in range(x)
- Correct! This is the simplest way to write it and makes your code easiest to read.
- for i in range(x, y)
- Incorrect! Although this could work, it can be done more simply. Try again.
- for i in range(x, y, z)
- Incorrect! Although this could work, it can be done more simply. Try again.
- for i in list
- Incorrect! You don't have a preexisting list, so you should use the range function to generate one for you. Try again.
Q-12: If you wanted to execute a loop 100 times, which type of for
statement should you use?
- for i in range(x)
- Incorrect! The list exists already, so there is no need to generate one using the range function. Try again.
- for i in range(x, y)
- Incorrect! The list exists already, so there is no need to generate one using the range function. Try again.
- for i in range(x, y, z)
- Incorrect! The list exists already, so there is no need to generate one using the range function. Try again.
- for i in list
- Correct! Because your list exists already, you can use this format to iterate through each item inside it.
Q-13: If you wanted to use each item of an existing list inside the loop, which type of for
statement should you use?
The arguments to range
must be integers, so range
does not work with strings.
However, if you wanted to print the letters A to Z in a loop, you could do something
like this:
You can use the built-in function chr
to convert integers to their corresponding Unicode characters.
6.12.3. while Statements¶
A more general looping structure is the while
statement.
Run this code to observe the behavior of a basic while loop and answer the questions below.
- True
- Correct! The body of the while loop will execute as long as the loop condition is True.
- False
- Incorrect! You've got it backwards. Try again.
Q-16: What must the value of the Boolean expression (after the while
) be in order
for the first print
statement to execute?
In the above code, the variable i
is incremented by 1 each time the loop body
is executed. Because the value of i
steadily grows, the “loop condition” (the
Boolean expression after the while
) eventually becomes false when i = 3, which
causes the loop body to stop executing.
- 0 1 2
- Incorrect! This is what it printed before, but swapping the lines would change the output. Try again.
- 1 2 3
- Correct! "i" is incremented before it is printed, so the numbers it prints are one higher than before.
- 0 1 2 3
- Incorrect! The loop still terminates when the end of the loop body is reached while i < 3. Try again.
- 1 2 3 4
- Incorrect! The loop still terminates when the end of the loop body is reached while i < 3. Try again.
- There would be no output
- Incorrect! Something would still be printed. Try again.
Q-17: Imagine that lines 3 and 4 in the above code were swapped. What is the new output of the code?
- Change line 1 to "i = 1"
- Correct! This would print "1 2".
- Change the loop condition to "i < 2"
- Correct! This would print "0 1".
- Change line 4 to "i = i + 2"
- Correct! This would print "0 2".
- Swap lines 1 and 2
- Incorrect! This would cause a NameError because "i" wouldn't be defined when the program tries to run the "while" line for the first time. Try again.
Q-18: Which of these modifications would make the loop in the above code only run twice? There are one or more answers.
A while
loop has three parts that control the number of times it executes.
The first part initializes the variable or condition, the second part tests
whether the end has been reached, and the third part updates the variable or
condition.
- 0 1 2
- Incorrect! "i" does not increase anywhere in the code. Try again.
- 1 2 3
- Incorrect! "i" begins at 0, not 1. Try again.
- 0 would print infinitely
- Correct! Because the value of "i" never changes, the program will never leave the while loop.
- SyntaxError
- Incorrect! The compiler can interpret your code, but it may not do what you intended. Try again.
Q-19: If you deleted line 4 of the code above, what would print?
When writing a while
loop, it’s helpful to answer a few
questions before you start:
What needs to be initialized before the loop?
What condition must be true for the loop to repeat?
What will change so that the loop eventually ends?
For example, consider the code below. The add(n)
function
prompts the user for n
numbers and returns the sum of these
values. For example, when add(5)
is called, the user is
asked to input five numbers. If the user inputs 3, 1, 5, 2, and
4, the function would return the value 15.
Observe the behavior of this code to see how it answers the the three bullet points above.
Before the loop begins, the i
variable, which counts how many
times the loop runs, must be initialized. However, the total
variable must also be initialized outside of the while
loop,
or else it would reset to 0 each time the loop ran.
The loop repeats n
times, so the Boolean expression that must
be true for the loop to continue is i < n
.
Finally, for the loop to eventually end, i
must be incremented,
so we include the statement i = i + 1
.
Making sure you answer these questions helps you write better
(and less buggy) while
loops.
If you worked in a group, you can copy the answers from this page to the other group members. Select the group members below and click the button to share the answers.
The Submit Group button will submit the answer for each each question on this page for each member of your group. It also logs you as the official group submitter.