Control Flow: Loops (con’t) and Nested Loops
Winter 2025
1
Adrian Salguero
Announcements
2
Some Loops
# Sum of a list of values, what values?
result = 0
for element in range(5):
result = result + element
print("The sum is: " + str(result))
# Sum of a list of values, what values?
result = 0
for element in range(5, 1, -1):
result = result + element
print("The sum is:", result)
# Sum of a list of values, what values?
result = 0
for element in range(0, 8, 2):
result = result + element
print("The sum is:", result)
# Sum of a list of values, what values?
result = 0
size = 5
for element in range(size):
result = result + element
print("When size = " + str(size) + " result is " + str(result))
3
How to process a list:�One element at a time
result = initial_value
for element in list:
result = updated result
use result
4
# Sum of a list
result = 0
for element in mylist:
result = result + element
print(result)
Examples of list processing
result = 1
for element in mylist:
result = result * element
curr_max = mylist[0]
for element in mylist:
curr_max = max(curr_max, element)
result = 0
for element in range(11):
result = result + (2.0/3.0)**element
5
result = initial_value
for element in list:
result = updated result
The first element of the list (counting from zero)
Nested Loops
for i in [1, 2, 3]:
print("Before j loop i is", i)
for j in [50, 100]:
print("j is", j)
What is the output?
6
More Nested Loops
How many statements does this loop contain?
for i in [0, 1]:
print("Outer", i)
for j in [2, 3]:
print(" Inner", j)
print(" Sum", i + j)
print("Outer", i)
What is the output?
7
More Nested Loops
How many statements does this loop contain?
for i in [0, 1]:
print("Outer", i)
for j in [2, 3]:
print(" Inner", j)
print(" Sum", i + j)
print("Outer", i)
What is the output?
8
Output:
Outer 0
Inner 2
Sum 2
Inner 3
Sum 3
Outer 0
Outer 1
Inner 2
Sum 3
Inner 3
Sum 4
Outer 1
loop body:�3 statements
“nested”�loop body:�2 statements
Understand loops through the transformation approach
Key idea:
9
for i in [0, 1]:
print("Outer", i)
for j in [2, 3]:
print(" Inner", j)
i = 0
print("Outer", i)
for j in [2, 3]:
print(" Inner", j)
i = 1
print("Outer", i)
for j in [2, 3]:
print(" Inner", j)
i = 0
print("Outer", i)
j = 2
print(" Inner", j)
j = 3
print(" Inner", j)
i = 1
print("Outer", i)
j = 2
print(" Inner", j)
j = 3
print(" Inner", j)
Test your understanding of loops
Puzzle 1:
for i in [0, 1]:
print(i)
print(i)
Puzzle 2:
i = 5
for i in []:
print(i)
Puzzle 3:
for i in [0, 1]:
print("Outer", i)
for i in [2, 3]:
print(" Inner", i)
print("Outer", i)
10
inner�loop�body
outer�loop�body
Output:
Test your understanding of loops
Puzzle 1:
for i in [0, 1]:
print(i)
print(i)
Puzzle 2:
i = 5
for i in []:
print(i)
Puzzle 3:
for i in [0, 1]:
print("Outer", i)
for i in [2, 3]:
print(" Inner", i)
print("Outer", i)
11
Outer 0
Inner 2
Inner 3
Outer 3
Outer 1
Inner 2
Inner 3
Outer 3
0
1
1
Output:
(no output)
inner�loop�body
outer�loop�body
Reusing loop variable�(don’t do this!)
Some More Loops
for size in [1, 2, 3, 4]:
print("size is", size)
for element in range(size):
print("element is", element)
12
Even More Loops
for size in [1, 2, 3, 4]:
result = 0
for element in range(size):
result = result + element
print("size=" + str(size) + " result=" + str(result))
print("We are done!")
print("result is", result)
13
What happens if we move result = 0
to be the first line of the program instead?
Fix this loop
# Goal: print 1, 2, 3, …, 48, 49, 50
for tens_digit in [0, 1, 2, 3, 4]:
for ones_digit in [1, 2, 3, 4, 5, 6, 7, 8, 9]:
print(tens_digit * 10 + ones_digit)
Questions:
Hint: Watch out for "edge conditions" (beginning or end of loop)
14
Some Fixes
for tens_digit in [0, 1, 2, 3, 4]:
for ones_digit in [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]:
print(tens_digit * 10 + ones_digit + 1)
for tens_digit in [0, 1, 2, 3, 4]:
for ones_digit in [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]:
print(tens_digit * 10 + ones_digit)
for ones_digit in [1, 2, 3, 4, 5, 6, 7, 8, 9]:
print(ones_digit)
for tens_digit in [1, 2, 3, 4]:
for ones_digit in [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]:
print(tens_digit * 10 + ones_digit)
print(50)
15
Loops over Strings
for letter in "hello":
print(letter)
my_string = "CSE 160"
for letter in my_string:
print(letter)
count = 0
for letter in my_string:
count = count + 1
print(count)
16
Todos for next lecture
17