Top Banner
Object-Oriented Programming in Python Goldwasser and Letscher Chapter 4 Elementary Control Structures Terry Scott University of Northern Colorado 2007 Prentice Hall
34

Terry Scott University of Northern Colorado 2007 Prentice Hall

Jan 14, 2016

Download

Documents

kesia

Object-Oriented Programming in Python Goldwasser and Letscher Chapter 4 Elementary Control Structures. Terry Scott University of Northern Colorado 2007 Prentice Hall. Introduction: Chapter 4 Topics. Flow of control for loop statement if statement list comprehension - PowerPoint PPT Presentation
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Terry Scott University of Northern Colorado 2007 Prentice Hall

Object-Oriented Programming in PythonGoldwasser and Letscher

Chapter 4Elementary Control Structures

Terry ScottUniversity of Northern Colorado

2007 Prentice Hall

Page 2: Terry Scott University of Northern Colorado 2007 Prentice Hall

2

Introduction: Chapter 4 Topics

• Flow of control– for loop statement– if statement– list comprehension

• Case Study: DNA to RNA Transcription

• Case Study: Drawing a Pyramid

• Chapter 5 continues with other flow of control statements

Page 3: Terry Scott University of Northern Colorado 2007 Prentice Hall

3

For Loopfor i in sequence: <body of loop>

• i is called the loop variable.• sequence can be any sequence of values:

– list. – str.– tuple.– range command.

• body of loop – instructions that are executed by the loop. Must be indented.

Page 4: Terry Scott University of Northern Colorado 2007 Prentice Hall

4

For Loop

Page 5: Terry Scott University of Northern Colorado 2007 Prentice Hall

5

For Loop Example (animated)

#for loop printing a sequenceguests = ['Carol', 'Alice', 'Bob']for person in guests: print person=================================

CarolAliceBob

Page 6: Terry Scott University of Northern Colorado 2007 Prentice Hall

6

For Loop Another Example (animated)

#Another way to do this (previous code is better)

guests = ['Carol', 'Alice', 'Bob']

for i in range(len(guests)):

print i, guests[i]

=================================

0 Carol

1 Alice

2 Bob

Page 7: Terry Scott University of Northern Colorado 2007 Prentice Hall

7

For Loop Diagram for Previous Slide

Page 8: Terry Scott University of Northern Colorado 2007 Prentice Hall

8

For Loop Bank Transactions (animated)

transactions = [200, -50, 100]balance = 0for entry in transactions:

print balancebalance = balance + entry

print 'Your balance is', balance===================================0200150250Your balance is 250

Page 9: Terry Scott University of Northern Colorado 2007 Prentice Hall

9

For Loop Diagrams for Previous Slide

Page 10: Terry Scott University of Northern Colorado 2007 Prentice Hall

10

Index-Based Loops

for count in range(10,0,-1):

print count,

print 'Blastoff!'

=================================

#output below

10 9 8 7 6 5 4 3 2 1 Blastoff!

Page 11: Terry Scott University of Northern Colorado 2007 Prentice Hall

11

Index-Based Loops (continued)

#position starts at 0. add 1 to position to have it start at 1

groceries = ['milk', 'cheese', 'bread', 'cereal']

for position in range(len(groceries)):

label = str(1 + position) + '. '

print label + groceries[position]

========================================

1. milk

2. cheese

3. bread

4. cereal

Page 12: Terry Scott University of Northern Colorado 2007 Prentice Hall

12

Flawed Attempt at Making Names in a List Lower Case

guests = ['Carol', 'Alice', 'Bob']

for person in guests

person = person.lower()

• The problem is once a name is made lower case it is not put back in list.

• See diagram on next slide.

Page 13: Terry Scott University of Northern Colorado 2007 Prentice Hall

13

For Loop Assignments

Page 14: Terry Scott University of Northern Colorado 2007 Prentice Hall

14

Solution to Previous Problem with Lower Case

• Use an indexed loop.• Notice the lower case name is assigned

back to the list.

guests = ['Carol', 'Alice', 'Bob']for i in range(len(guests)):

guests[i] = guests[i].lower()

Page 15: Terry Scott University of Northern Colorado 2007 Prentice Hall

15

Nested Loops

# code prints out chapters 1 and 2 each with # sections a – d and then Appendix. Output # on next slide.for chapter in '12': print 'Chapter ' + chapter for section in 'abcd': print ' Section ' + sectionprint 'Appendix'

Page 16: Terry Scott University of Northern Colorado 2007 Prentice Hall

16

Nested Loop Output

Chapter 1 Section a Section b Section c Section dChapter 2 Section a Section b Section c Section dAppendix

Page 17: Terry Scott University of Northern Colorado 2007 Prentice Hall

17

DNA to RNA Transcription

DNA RNA

A U

C G

G C

T A

Page 18: Terry Scott University of Northern Colorado 2007 Prentice Hall

18

Case Study: DNA to RNA Transcription

#Uses two coordinated lists. Look up base in DNA list.#Use that index to obtain comparable RNA basednaCodes = 'ACGT'rnaCodes = 'UGCA'dna = raw_input('Enter a DNA sequence: ')rnaList = []for base in dna: whichPair = dnaCodes.index(base) rnaLetter = rnaCodes[whichPair] rnaList.append(rnaLetter)rna = ''.join(rnaList)print 'Transcribed into RNA:', rna

Page 19: Terry Scott University of Northern Colorado 2007 Prentice Hall

19

Drawing a Pyramid: Using Rectangles and Squares

Page 20: Terry Scott University of Northern Colorado 2007 Prentice Hall

20

Drawing Pyramid with Rectanglesfrom cs1graphics import *numLevels = 8unitSize = 12screenSize = unitSize * (numLevels + 1)paper = Canvas(screenSize, screenSize)centerX = screenSize/2.0for level in range(numLevels): #create top to bottom levels.

width = (level + 1)* unitSizeblock = Rectangle(width, unitSize)centerY = (level + 1) * unitSize

block.move(centerX, centerY)block.setFillColor('grey')paper.add(block)

Page 21: Terry Scott University of Northern Colorado 2007 Prentice Hall

21

Pyramid Made of Squares

from cs1graphics import *numLevels = 8unitSize = 12screenSize = unitSize * (numLevels + 1)paper = Canvas(screenSize, screenSize)centerX = screenSize/2.0#create levels from top to bottomfor level in range(numLevels):

centerY = (level + 1) * unitSizeleftmostX=centerX-unitSize+level/2.0

Page 22: Terry Scott University of Northern Colorado 2007 Prentice Hall

22

Pyramid Made of Squares (continued)

#nested for loop – inside previous for

for blockCount in range(level + 1):

block = Square(unitSize)block.move(leftmostX+unitSize*

blockCount.centerY)

block.setFillColor('grey')

paper.add(block)

Page 23: Terry Scott University of Northern Colorado 2007 Prentice Hall

23

Conditional Statement

Page 24: Terry Scott University of Northern Colorado 2007 Prentice Hall

24

If Statement Flow Chart

if condition:

body

Page 25: Terry Scott University of Northern Colorado 2007 Prentice Hall

25

Animated If

x = 3

if x == 3:

x = 2 * x

print x

=================================

6

Page 26: Terry Scott University of Northern Colorado 2007 Prentice Hall

26

Animated If Continued

x = 4

if x == 3:

x = 2 * x

print x

=================================

3

Page 27: Terry Scott University of Northern Colorado 2007 Prentice Hall

27

If-Else Statement

Page 28: Terry Scott University of Northern Colorado 2007 Prentice Hall

28

If-Else Flow Chart

if condition:

body1

else:

body2

Page 29: Terry Scott University of Northern Colorado 2007 Prentice Hall

29

Animated If-Else

x = 3

if x < 3:

print 'x less than 3'

else:

print x, 'greater than or equal to 3'

================================

3 greater than or equal to 3

Page 30: Terry Scott University of Northern Colorado 2007 Prentice Hall

30

Conditional Statements (continued)

If condition1:

body1

elif condition2:

body2

else:

body3

Page 31: Terry Scott University of Northern Colorado 2007 Prentice Hall

31

Flowchart for If – elif - else

Page 32: Terry Scott University of Northern Colorado 2007 Prentice Hall

32

Counting DNA Bases Using Conditional Statements

numA = numC = numG = numT = 0for base in dna: if base == 'A':

numA += 1else:

if base == 'C': numC += 1else: if base == 'G': numG += 1 else: numT += 1

Page 33: Terry Scott University of Northern Colorado 2007 Prentice Hall

33

Counting DNA Bases Using Conditional Statements: Better Way

(elif is else and if combined)

numA = numC = numG = numT = 0for base in dna: if base == 'A':

numA += 1elif base == 'C':

numC += 1elif base == 'G':

numG += 1else:

numT += 1

Page 34: Terry Scott University of Northern Colorado 2007 Prentice Hall

34

List Comprehension

auxiliary = []

for person in guests:

auxiliary.append(person.lower())

# List comprehension is a shorter way to write

# this:

auxiliary = [person.lower() for person in guests]