/
Loop/Iteration structures & Booleans Loop/Iteration structures & Booleans

Loop/Iteration structures & Booleans - PowerPoint Presentation

luanne-stotts
luanne-stotts . @luanne-stotts
Follow
350 views
Uploaded On 2018-11-04

Loop/Iteration structures & Booleans - PPT Presentation

Iteration Iteration just means we keep doing the same thing over and over until some threshold is reached until a condition has been met Weve already seen a definite or counted loop for i in range15 ID: 713527

true loop gpa sum loop true sum gpa enter input print boolean count numbers line loops file data number

Share:

Link:

Embed:

Download Presentation from below link

Download Presentation The PPT/PDF document "Loop/Iteration structures & Booleans" is the property of its rightful owner. Permission is granted to download and print the materials on this web site for personal, non-commercial use only, and to display it on your personal computer provided you do not modify the materials and that you retain all copyright notices contained in the materials. By downloading content from our website, you accept the terms of this agreement.


Presentation Transcript

Slide1

Loop/Iteration structures & BooleansSlide2

Iteration

Iteration just means we keep doing the same thing over and over until some threshold is reached, until a condition has been met.

We’ve already seen a definite or counted loop:

for i in range(15):Slide3

# average1.py

# A program to average a set of numbers

# Illustrates counted loop with accumulator

def main():

n = input("How many numbers do you have? ")

sum = 0.0

for i in range(n):

x = input("Enter a number >> ")

sum = sum + x

print "\nThe average of the numbers is", sum / n

main()Slide4

Indefinite or conditional loops

A definite or counted loop assumes we know or can control exactly how many times the loop is executed. In the example

for x in range(10)

we supply the number of iterations—10.

But there are times when we, the programmers, won’t know how many iterations we need.

For these instances, we use indefinite or conditional loops.Slide5

Indefinite or conditional loops

The generic form of the conditional loop uses the while keyword….

while <condition>:

<body>

The <condition> is a Boolean statement, as with decision/selection structures.

while

i

<= 10: for

i in range(11) print i print i i = i + 1

These are equivalentSlide6

Indefinite or conditional loops: some tips

Here are a few important things to remember as you work with while loops:

Initialize your index value before you start the while loop

Make sure your index value will at some point meet the condition

Don’t forget to increment the index valueSlide7

Tips, cont.

Here’s what I mean:

i

= 0

while

i

<= 10:

print iThis code will continue indefinitely, because the value of i never changes. Hence i will never exceed 10, thus violating the condition and ending the loop. This is an INFINITE LOOP.Slide8

Tips, cont.

On the other hand, if you fail to initialize your index value, or initialize it so that it can never meet the condition, the loop will likely never happen at all.

while

i

<= 10:

print

i

i = i + 1i = 16while i <= 10: print

i

i

=

i

+ 1

In this case, since

i is never assigned an initial value, the loop just won’t happen.

In this case,

i

is assigned a value that already violates the condition—so the loop never happensSlide9

Interactive loops

The example we’ve been looking at assumes we, the programmers, set the number of iterations, e.g.,

i

<= 10

. But sometimes we want the user to determine how many iterations there are.

Here’s the algorithm:

set continue? to Yes

while continue? = yes

get first piece of data process that piece of data if there is more data, don’t change continue? otherwise, set continue? to NoSlide10

Interactive loops, cont.

For example, if we wanted to ask the user for the prices of things he/she wanted to buy, then add them up, we could use an

interative

loop:

cont= “y”

total = 0.0

while cont == “y”:

v = input(“Enter a price: “)

total = total + v cont = raw_input(“To continue, type ‘y’; to quit, type ‘n’)print totalSlide11

# average2.py

# A program to average a set of numbers

# Illustrates interactive loop with two accumulators

def main():

moredata

= "yes"

sum = 0.0

count = 0 while moredata[0] == 'y': x = input("Enter a number >> ") sum = sum + x count = count + 1 moredata = raw_input("Do you have more numbers (yes or no)? ") print "\

nThe

average of the numbers is", sum / count

main()Slide12

Sentinel loops

Instead of asking the user BOTH if she/he wants to continue AND to enter another value, programmers often use sentinel values, which just means that if users enter a special value instead of a regular data item, the loop ends and the program is over. Usually that sentinel value is a negative number, since we commonly ( when we ask users for values) want positive values from our users.Slide13

Sentinel loops, cont.

Here’s the syntax that would offer the user the option to enter a real piece of data or a special value to quit (usually it’s a negative number to quit):

num = input(“Enter a number, or a negative number to quit”)Slide14

# average3.py

# A program to average a set of numbers

# Illustrates sentinel loop using negative input as sentinel

def main():

sum = 0.0

count = 0

x = input("Enter a number (negative to quit) >> ")

while x >= 0:

sum = sum + x count = count + 1 x = input("Enter a number (negative to quit) >> ") print "\nThe average of the numbers is", sum / countmain()Notice that the index value, x, is initialized BEFORE the while loop startsSlide15

Sentinel loop improved

If we wanted to be able to include negative numbers in our program, using a sentinel value which is negative wouldn’t work. It would be better to just ask the user to hit the <ENTER> key without a value.

We can do this if we use

raw_input

() to get a string; if the string is empty the loop quits. If the string exists (if the user has typed in a number), we can use the

eval

() function to successfully apply arithmetic.Slide16

# average4.py

# A program to average a set of numbers

# Illustrates sentinel loop using empty string as sentinel

def main():

sum = 0.0

count = 0

xStr

= raw_input("Enter a number (<Enter> to quit) >> ") while xStr != "": x = eval(xStr) sum = sum + x count = count + 1

xStr

=

raw_input

("Enter a number (<Enter> to quit) >> ")

print "\

nThe

average of the numbers is", sum / countmain()Slide17

File loops

Of course, it would be easier to import a file with all the scores already entered. Earlier, we used a definite loop to read through the lines in a file; the stop condition was neatly determined by the Python syntax:

infile

= open(

fileName

, ‘r’)

for line in

infile

:<body of statements>Slide18

File loops

We can also use a while loop, but in this case we need to be able to designate the end of the file to stop the loop.

In this case, the while loop is used to read one line of the file after another, and to process the data in each line. When the end of the file is reached, the loop stops.

The loop does not stop at blank lines in the file because there is an invisible control symbol

\nSlide19

File loops

Here’s the code for a while loop that will stop at the end of the file:

infile

= open(

fileName

, ‘r’)

nuline

=

infile.readline()while nuline != “”: #process the line nuline = infile.readline()Slide20

# average6.py

# Computes the average of numbers listed in a file.

def main():

fileName

=

raw_input

("What file are the numbers in? ")

infile = open(fileName,'r') sum = 0.0 count = 0 line = infile.readline() while line != "": sum = sum + eval

(line)

count = count + 1

line =

infile.readline

()

print "\

nThe average of the numbers is", sum / count

if __name__ == '__main__': main()Slide21

Nested loops

Often we have to work through a file that contains data on each line that must be processed one by one. To do this, we want nested loops. The outer loop works through the file, line by line; the inner loop performs repetitive work on the data within one line. Slide22

Nested loops

# a program demonstrating nested for loops

def main():

index = 0

for y in range(5):

for x in range(4):

print 'In the "nested" for loop:', index, x, y

index += 1 # This adds one to index

main()Slide23

# average7.py

# Computes the average of numbers listed in a file.

# Works with multiple numbers on a line.

import string

def main():

fileName

=

raw_input("What file are the numbers in? ") infile = open(fileName,'r') sum = 0.0 count = 0 line = infile.readline

()

while line != "":

for

xStr

in

string.split

(line, ","): sum = sum +

eval(xStr)

count = count + 1

line =

infile.readline

()

print "\

nThe

average of the numbers is", sum / count

if __name__ == '__main__':

main()Slide24

Boolean operators

Sometimes simple conditional expressions don’t accomplish what we need done. If we try to use simple conditional expressions with decision statements, it can get really messy and cumbersome.

The solution is to combine conditional expressions into more complex expressions. To do this we need Boolean operators. Slide25

Boolean operators 2

If we wanted to grant awards for GPAs between certain ranges, we might need Boolean operators. For example, imagine this scheme:

So, grades between 4.0 and 3.8 get the

Poobah

; between 3.8 and 3.5, the Nabob; and between 3.5 and 3.3, the Enchilada.

GPA

GPA

Award

Up to 4.0Greater than 3.8Poobah3.8 or lessGreater than 3.5Nabob3.5 or lessGreater than 3.3EnchiladaSlide26

Boolean operators 3

If we put together two conditions using a Boolean operator, we can come up with one condition:

GPA = input(“Please enter your GPA”)

if GPA <= 4.0 and GPA > 3.8

print “you’ve won the

Poobah

!”

elif

GPA <= 3.8 and GPA > 3.5 print “you’ve won the Nabob!”elif GPA <= 3.5 and GPA > 3.3 print “you’ve won the Enchilada!”else

print “Sorry, no cigar.”Slide27

Boolean operators 4

Notice that if we make any changes in this code—for example, if we change

elif

GPA <= 3.8 and GPA > 3.5

to

elif

GPA <= 3.8 and GPA >= 3.5then a GPA of 3.5 would qualify for both the Nabob and Enchilada awards. The moral: when setting up Boolean conditions, pay close attention to “boundary conditions”, and test for those to make sure you get the results you want. Slide28

Boolean operators

Operator

Function

and (binary)

Both conditions must be true

for the whole expression to be true

or (binary)

Only one condition must be true

for the whole expression to be truenot (unary)The whole expression is true only if the one condition is falseArithmetic OperatorFunction==equal to>=greater than or equal to<=

less than or equal

to

>

greater than

<

less than

!=not equal toSlide29

Truth tables: and

The example we just looked at:

Condition1

Condition2

Whole

expression

True

TrueTrueTrueFalseFalseFalseTrueFalseFalseFalseFalse

If GPA is:

Condition1: GPA <= 4.0

Condition2: GPA > 3.8

Whole

expression

3.87

True

TrueTrue3.80True

False

False

4.0

True

True

True

3.6

True

False

FalseSlide30

Truth tables: or

The example we just looked at:

Condition1

Condition2

Whole

expression

True

True

TrueTrueFalseTrueFalseTrueTrueFalseFalseFalse

If GPA is:

Condition1: GPA <= 4.0

Condition2: GPA > 3.8

Whole

expression

3.87

TrueTrueTrue

3.80TrueFalseTrue4.0

True

True

True

3.6

True

False

TrueSlide31

Truth table: not

not

is an unary operator, which means it works on just one condition, not on two condition, like the binary operators

and

&

or.

The truth table for not is very simple:

Condition1

Whole expressionTrueFalseFalseTrueCondition1: GPA > 3.5Whole expressionTrueFalseFalse

TrueSlide32

Complex Boolean statements: racquetball example

A racquetball game can end when either play reaches a score of 15.

If we were to write a code fragment to express this, it would look like this:

while not (

playerA

== 15 or

playerB

== 15)

#continue playingThe combined or statement will evaluate as true if either player reaches 15; but they will not continue playing if this is true.Slide33

Complex Boolean statements: racquetball example 2

Here’s another condition: the racquetball game stops if either player reaches 15 OR the score is 7-0.

In code:

scoreA

== 15 or

scoreB

== 15 or (

scoreA

== 7 and scoreB == 0) or (scoreB == 7 and scoreA == 0)Because we are linking each expression with a Boolean or, if any one of the conditions is true, the whole expression is true.Slide34

Complex Boolean statements: Volley ball example

In volleyball, one team must reach 15 AND win by at least two points.

To do this in code:

(

scoreA

>= 15 and

scoreA-scoreB

>= 2) or (

scoreB >= 15 and scoreB –scoreA >= 2Or, even more condensed:(scoreA >= 15 or scoreB >= 15) and abs(scoreA –scoreB

) >= 2Slide35

Boolean algebra

There are parallels between Boolean rules and the laws of simple algebra. For example

Hence 0 evaluates as false in computer languages, and 1 evaluates as true. Also,

and

is similar to multiplication and

or

is similar to addition.

a * 0 = 0

a and false = = falsea * 1 = aa and true == a a + 0 = aa or false == aSlide36

Boolean algebra 2

Three more things about Boolean algebra:

A double negative cancels out:

not (not a) == a

or

!(not a) == a

Distribution:

a or (b and c) == (a or b) and (a or c)

a and (b or c) == (a and b) or (a and c)DeMorgan’s laws:not(a or b) == (not a) and (not b)not(a and b) == (not a) or (not b)Slide37

Input validation

Essentially, input validation tests what the user has entered, and if it’s not a valid entry, then the program keeps asking for a valid entry until the user provides one.

This is particularly useful when using a sentinel value to control a loop—for example, if the user enters a negative number the loop stops.

In order to make this work, the user has to enter a value in the loop.Slide38

Post-test loop

In other words, the loop starts, then the user is prompted for an entry, the entry value is tested, and if it is valid, the loop continues; otherwise, the user is

reprompted

.

userData

= -1

while

userData

<0: userData = input(“Enter a GPA”) if userData < 0: print “Enter a positive number”Slide39

Loop and a half

Python provides a keyword,

break

, to suddenly exit a loop. This can be used in a validity check.

w

hile True:

userData

= input(“Enter your GPA”) if userData >= 0: break print “Enter a positive number”Slide40

The

bool

data type

Python 2.3 supports a

bool

data type, which evaluates as to either false or true. False is interpreted as zero, true usually as 1, but in fact any number other than 0 will evaluate as true.

In the case of strings, any string that is not empty can be evaluated as true. An empty string will be evaluated as false. Slide41

The

bool

data type 2

Because Python has loose data typing (meaning that the programmer doesn’t have to explicitly designate data types, and a variable can change data types on assignment), a string variable can be evaluated as a

bool

data type.

response =

raw_input

(“Enter your class: SR, JR, SO, FR”)if response: # in other words, if response is true, that is not empty classRank = responseelse: classRank = “SR”