0% found this document useful (0 votes)
11 views

4 Python4-Iterations

iterations(loops)

Uploaded by

sabakabha
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
11 views

4 Python4-Iterations

iterations(loops)

Uploaded by

sabakabha
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 48

Loops and Iteration

Chapter 5
Outline
• While loops (indefinite) • For loops (definite)
• Infinite loops • Iteration variables
• Using break • Loop idioms
• Using continue • Largest or smallest

Copyright © 2016 Pearson Education, Inc., Hoboken NJ


Python Loops
• Python has two primitive loop commands:
• while loops
– With the while loop we can execute a set of statements as long as a
condition is true.
• for loops
– used for iterating over a sequence (that is either a list, a tuple, a
dictionary, a set, or a string).
– With the for loop we can execute a set of statements, once for each
item in a list, tuple, set etc

8-3
Copyright © 2016 Pearson Education, Inc., Hoboken NJ
While Loops
• while loop is used to execute a block of statements repeatedly until
a given a condition is satisfied.
• When the condition becomes false, the line immediately after the
loop in program is executed

The logic of a While


loop
8-4
Copyright © 2016 Pearson Education, Inc., Hoboken NJ
n=5 Repeated Steps
Output:
No Yes Program:
n>0? 5
n = 5 4
print(n) while n > 0 :
3
print(n)
n = n – 1 2
n = n -1 print('Blastoff!') 1
print(n) Blastoff!
0
Loops (repeated steps) have iteration variables that
print('Blastoff') change each time through a loop. Often these iteration
variables go through a sequence of numbers.
n=5 An Infinite Loop
No Yes
n>0?
n = 5
while n > 0 :
print('Welcome')
print('Welcome')
print('Python')
print('Python') print('Bye!')

print('Bye!') What is wrong with this loop?


n=0 Another Loop
No Yes
n>0?
n = 0
while n > 0 :
print('Welcome')
print('Welcome')
print('Python')
print('Python') print('Bye!')

print('Bye!') What is this loop doing?


Breaking Out of a Loop
• The break statement ends the current loop and jumps to the
statement immediately following the loop

• It is like a loop test that can happen anywhere in the body of the
loop
while True: > hello there
line = input('> ') hello there
if line == 'done' : > finished
break finished
print(line) > done
print('Done!') Done!
Breaking Out of a Loop
• The break statement ends the current loop and jumps to the
statement immediately following the loop

• It is like a loop test that can happen anywhere in the body of the
loop
while True: > hello there
line = input('> ') hello there
if line == 'done' : > finished
break finished
print(line) > done
print('Done!') Done!
No Yes
while True: True ?
line = input('> ')
if line == 'done' :
....
break
print(line)
print('Done!')
break

...

print('Done')
Finishing an Iteration with
continue
The continue statement ends the current iteration and jumps to the
top of the loop and starts the next iteration

while True:
> hello there
line = input('> ')
if line[0] == '#' : hello there
continue > # don't print this
if line == 'done' : > print this!
break print this!
print(line) > done
print('Done!') Done!
Finishing an Iteration with
continue
The continue statement ends the current iteration and jumps to the
top of the loop and starts the next iteration

while True:
> hello there
line = input('> ')
if line[0] == '#' : hello there
continue > # don't print this
if line == 'done' : > print this!
break print this!
print(line) > done
print('Done!') Done!
No
True ? Yes
while True:
line = raw_input('> ') ....
if line[0] == '#' :
continue
if line == 'done' : continue
break
print(line)
...
print('Done!')

print('Done')
Write a Python program that ask the user to enter 5 numbers from 0
to 9. If the user enters 0 then end the program, if the user enters 5
or 7 then do nothing, otherwise print the number.
Indefinite Loops

• While loops are called “indefinite loops” because they keep


going until a logical condition becomes False or break

• The loops we have seen so far are pretty easy to examine to see
if they will terminate or if they will be “infinite loops”

• Sometimes it is a little harder to be sure if a loop will terminate


Definite Loops
Iterating over a set of items…
Definite Loops
• Quite often we have a list of items of the lines in a file -
effectively a finite set of things

• We can write a loop to run the loop once for each of the items in
a set using the Python for construct

• These loops are called “definite loops” because they execute an


exact number of times

• We say that “definite loops iterate through the members of a set”


A Simple Definite Loop
5
for i in [5, 4, 3, 2, 1] :
print(i)
4
print('Blastoff!') 3
2
1
Blastoff!
A Definite Loop with Strings

Happy New Year: Joseph


friends = ['Joseph', 'Glenn', 'Sally'] Happy New Year: Glenn
for frnd in friends : Happy New Year: Sally
print('Happy New Year:', frnd)
print('Done!')
Done!
A Simple Definite Loop
Yes No
Done? Move i ahead 5
for i in [5, 4, 3, 2, 1] : 4
print(i) 3
print(i) print('Blastoff!')
2
1
Blastoff!

Definite loops (for loops) have explicit iteration variables


print('Blast off!') that change each time through a loop. These iteration
variables move through the sequence or set.
Looking at in...
• The iteration variable
“iterates” through the Five-element
sequence (ordered set) sequence
Iteration variable
• The block (body) of code is
executed once for each
for i in [5, 4, 3, 2, 1] :
value in the sequence
print(i)
• The iteration variable moves
through all of the values in
the sequence
No • The iteration variable “iterates”
Yes
Done? Move i ahead through the sequence (ordered
set)
print(i)
• The block (body) of code is
executed once for each value in
the sequence

• The iteration variable moves


through all of the values in the
for i in [5, 4, 3, 2, 1] : sequence
print(i)
i=5
No print(i)
Yes
Done? Move i ahead i=4
print(i)
print(i)
i=3
print(i)

i=2

for i in [5, 4, 3, 2, 1] : print(i)


print(i)
i=1
print(i)
Loop Idioms:
What We Do in Loops

Note: Even though these examples are simple,


the patterns apply to all kinds of loops
Making “smart” loops
Set some variables to
initial values
for thing in data:
The trick is “knowing” something
Look for something or
about the whole loop when you
do something to each
are stuck writing code that only
entry separately,
sees one entry at a time updating a variable

Look at the variables


Looping Through a Set
$ python basicloop.py
print('Before')
Before
for thing in [9, 41, 12, 3, 74, 15] : 9
print(thing) 41
print('After')
12
3
74
15
After
Finding the Largest Value
$ python largest.py
largest_so_far = -1
Before -1
print('Before', largest_so_far)
for the_num in [9, 41, 12, 3, 74, 15] :
9 9
if the_num > largest_so_far : 41 41
largest_so_far = the_num 41 12
print(largest_so_far, the_num) 41 3
74 74
print('After', largest_so_far) 74 15
After 74

We make a variable that contains the largest value we have seen so far. If the current
number we are looking at is larger, it is the new largest value we have seen so far.
More Loop Patterns…
Counting in a Loop

How to count how many times we execute a loop?


Counting in a Loop
$ python countloop.py
counter= 0 Before 0
print('Before', counter) 19
for thing in [9, 41, 12, 3, 74, 15] :
2 41
counter= counter+ 1
print(counter, thing) 3 12
print('After', counter) 43
5 74
6 15
After 6

To count how many times we execute a loop, we introduce a counter variable


that starts at 0 and we add one to it each time through the loop.
Summing in a Loop
How to sum values in a sequence?
Summing in a Loop
$ python countloop.py
summ= 0 Before 0
print('Before', summ) 99
for thing in [9, 41, 12, 3, 74, 15] :
50 41
summ= summ+ thing
print(summ, thing) 62 12
print('After', summ) 65 3
139 74
154 15
After 154

To add up a value we encounter in a loop, we introduce a sum variable that


starts at 0 and we add the value to the sum each time through the loop.
Finding the Average in a Loop
Finding the Average in a Loop
$ python averageloop.py
count = 0 Before 0 0
sum = 0
199
print('Before', count, sum)
for value in [9, 41, 12, 3, 74, 15] : 2 50 41
count = count + 1 3 62 12
sum = sum + value 4 65 3
print(count, sum, value) 5 139 74
print('After', count, sum, sum / count) 6 154 15
After 6 154 25.666

An average just combines the counting and sum patterns and


divides when the loop is done.
Filtering in a Loop
print('Before') $ python search1.py
for value in [9, 41, 12, 3, 74, 15] : Before
if value > 20: Large number 41
print('Large number',value)
print('After')
Large number 74
After

We use an if statement in the loop to catch / filter the


values we are looking for.
Search Using a Boolean Variable
$ python search1.py
found = False
Before False
print('Before', found) False 9
for value in [9, 41, 12, 3, 74, 15] : False 41
if value == 3 : False 12
found = True True 3
print(found, value) True 74
print('After', found)
True 15
After True

If we just want to search and know if a value was found, we use a variable that
starts at False and is set to True as soon as we find what we are looking for.
Search Using a Boolean Variable
$ python search1.py
found = False
Before False
print('Before', found) False 9
for value in [9, 41, 12, 3, 74, 15] : False 41
if value == 3 : False 12
found = True True 3 Is it ok if I stop looping
here?
print(found, value) True 74 How?

print('After', found)
True 15
After True

If we just want to search and know if a value was found, we use a variable that
starts at False and is set to True as soon as we find what we are looking for.
How to Find the Smallest Value
How would we change this to make it find the smallest value in the list?

$ python largest.py
largest_so_far = -1 Before -1
print('Before', largest_so_far) 9 9
for the_num in [9, 41, 12, 3, 74, 15] : 41 41
if the_num > largest_so_far : 41 12
largest_so_far = the_num
print(largest_so_far, the_num)
41 3
74 74
print('After', largest_so_far) 74 15
After 74
Finding the Smallest Value
smallest_so_far = -1
print('Before', smallest_so_far)
for the_num in [9, 41, 12, 3, 74, 15] :
if the_num < smallest_so_far :
smallest_so_far = the_num
print(smallest_so_far, the_num)

print('After', smallest_so_far)

We switched the variable name to smallest_so_far and switched the > to <
Finding the Smallest Value
$ python smallbad.py
smallest_so_far = -1
Before -1
print('Before', smallest_so_far)
for the_num in [9, 41, 12, 3, 74, 15] :
-1 9
if the_num < smallest_so_far : -1 41
smallest_so_far = the_num -1 12
print(smallest_so_far, the_num) -1 3
-1 74
print('After', smallest_so_far) -1 15
After -1

We switched the variable name to smallest_so_far and switched the > to <
Finding the Smallest Value
smallest = None $ python smallest.py
print('Before') Before
for value in [9, 41, 12, 3, 74, 15] : 99
if smallest is None :
9 41
smallest = value
elif value < smallest : 9 12
smallest = value 33
print(smallest, value) 3 74
print('After', smallest) 3 15
After 3

We still have a variable that is the smallest so far. The first time through the loop
smallest is None, so we take the first value to be the smallest.
The is and is not Operators
• Python has an is operator
that can be used in logical
expressions
smallest = None
print('Before') • Implies “is the same as”,
for value in [3, 41, 12, 9, 74, 15] : None
if smallest is None : boolean
smallest = value
elif value < smallest :
smallest = value • Similar to, but stronger than
print(smallest, value) ==
0==0.0 True
print('After', smallest)
0 is 0.0 False

• is not also is a logical


operator
Nested loop
• A nested loop is a loop inside a loop.
Example:

#note the indent

Copyright © 2016 Pearson Education, Inc., Hoboken NJ


Nested while loop

Copyright © 2016 Pearson Education, Inc., Hoboken NJ


Excercise
• What is the expected output of the follwoing code:

Copyright © 2016 Pearson Education, Inc., Hoboken NJ


Excercise
• What is the expected output of the follwoing code:

Copyright © 2016 Pearson Education, Inc., Hoboken NJ


Summary
• While loops (indefinite) • For loops (definite)
• Infinite loops • Iteration variables
• Using break • Loop idioms
• Using continue • Largest or smallest
• None constants and variables

• Nested loops

You might also like