Transcript Chapter 4

Guide to Programming with
Python
Chapter Four
Strings, and Tuples; for Loops: The Word
Jumble Game
Objectives
 Data type: sequences (containers)
– Strings (a sequence of letters)
– Tuples (a sequence of elements of any type; immutable)
– Lists (a sequence of elements of any type; mutable)
 Create sequences
– Assignment statement
s, t = "sword", ("sword", "armor”)
– Use the range() function to create a sequence of
integers
 Use for loops to move through a sequence, in order
 Index and slice sequences (any sequence)
 Use sequence functions and operators
Guide to Programming with Python
2
Understanding Sequence
 Sequence: An ordered list of elements (compared
to dictionary)
 Element: A single item in a sequence
 Iterate: To move through a sequence, in order
(using for loops)
 List of your top-ten movies
– A sequence
– Each element is a movie title
– To iterate over would be to go through each title, in
order
Guide to Programming with Python
3
Using for Loop to Iterate Over a
Sequence
loop iterates over a sequence; performs loop
body for each element
 During each iteration, loop variable gets next
element
 In loop body, something usually done with loop
variable
 for
 A string is a sequence of characters; So loop
iterates over letters in the string (e.g., word below)
sequence
loop variable
for letter in word:
print letter
Guide to Programming with Python
4
Combining for and range()
for letter in word:
print letter
Can be transformed into:
for idx in range(len(word)):
letter = word[idx]
print letter
 Combine for loop with range() function, and len()
function
Guide to Programming with Python
5
The range() Function
>>> range(5)
[0, 1, 2, 3, 4]
>>> range(0, 50, 5)
[0, 5, 10, 15, 20, 25, 30, 35, 40, 45]
 Returns a sequence of integers in range
 range(i) returns sequence 0 through i – 1
 range(i, j) returns sequence i through j – 1
 range(i, j, k) returns sequence i to j - 1, step k
Guide to Programming with Python
6
Counting Forward, By Fives, and
Backwards
# counting forward
for i in range(10):
print i,
# counting by fives
for i in range(0, 50, 5):
print i,
# counting backwards
for i in range(10, 0, -1):
print i,
Guide to Programming with Python
7
Comparing for and while Loops
 for
–
–
–
–
–
loop
Like while loop, repeats a loop body
Unlike while loop, doesn’t repeat based on condition
Repeats loop body for each element in a sequence
Ends when it reaches end of the sequence
e.g., go through sequence of game titles and print
each
Guide to Programming with Python
8
Indexing Sequence
 Sequential access: Access in order (see for
loops)
 Indexing: Process used to access a specific
element of a sequence
– Random access: Direct access to any element
 Element/Member: An element of a sequence
 Python allows for random access to sequences
(such as strings) via indexing
Guide to Programming with Python
9
Working with Positive and Negative
Position Numbers
 Use brackets and position number to index "index"[3]
 Positive position numbers: starts at 0; ends with the
length of a sequence - 1
 Negative position numbers: starts at the end of
sequence with position number: –1
 Attempt to access beyond last position results in error
Guide to Programming with Python
10
Slicing
>>> word = "pizza"
>>> print word[0:5]
pizza
>>> print word[1:3]
iz
>>> print word[-4:3]
iz
 Slice: Copy of continuous section of a sequence
 Can give start and end position
 Slicing shorthand (by omitting the start, end, or
both points) word[:4] word[2:] word[:]
 Slice is a brand-new sequence
Guide to Programming with Python
11
indexing_nd_slicing.py
import random
word = "pizza"
wlen = len(word)
print word[1]
print word[-1]
rd = random.randrange(wlen)
print word[rd]
print word[0:wlen]
print word[:]
print word[:3]
print word[-wlen]
print word[wlen]
?
Guide to Programming with Python
12
Using Sequence Operators and
Functions
 Python has functions and operators that work with
sequences
 Can tell you things such as
– Length of sequence e.g., len(“abcd”)
– If contains specific element e.g., “a” in “abcd”
Guide to Programming with Python
13
Using the len() function
>>> len("Game Over!")
10
 Takes a sequence (e.g., string – a sequence of
letters)
 Returns the number of elements
 In strings, every character counts – spaces and
punctuation
Guide to Programming with Python
14
Using the in Operator
>>> "e" in "Game Over"
True
 Tests for element membership
– Returns True if element is in sequence
– Returns False otherwise
 Using in with index
(see index_demo.py)
alphabet = "abcdefghijklmnopqrstuvwxyz"
letter = "a"
if letter in alphabet:
idx = alphabet.index(letter)

Guide to Programming with Python
15
Immutable vs Mutable Sequences
>>> word = "game"
>>> word[0] = "l"
TypeError: object does not support item assignment
 Mutable: Changeable
 Immutable: Unchangeable
 String immutability -- Strings are immutable
sequences; can’t be changed
– Tuples are immutable too; Lists are mutable!
 But can create new strings from existing ones
(like through concatenation)
Guide to Programming with Python
16
String Immutability
 Cannot modify an existing string
 But can "build" (create) a new string with
concatenation operator
 The following do NOT work
word = "game"
word[0] = "G”
 The following work
word = "game"
word = "Game"
Guide to Programming with Python
17
The No Vowels Program
VOWELS = "aeiou"
Constant: Name associated with value not meant to
be changed
Convention is to use all uppercase variable names
Can make programs clearer
No true constants in Python
new_message += letter
Concatenation creates brand-new string
– Remember, strings are immutable
– So, new_message becomes the newly created string
resulting from concatenation
Guide to Programming with Python
18
Tuples
 Tuple: Immutable sequence of values of any type
 Could have tuple of integers for a high score list,
for example
 Tuples elements don't need to all be of same type
a = ("Monday", 3, 4.5)
Guide to Programming with Python
19
Tuple Basics
 Creating an Empty Tuple
inventory = ()
 Treating a Tuple as a Condition
if not inventory:
print "You are empty-handed."
 Creating a Tuple with Elements
inventory = ("sword", "armor", "shield",
"healing potion")
 Printing a tuple
print "\nThe tuple inventory is:\n", inventory
 Looping through a tuple’s elements
for item in inventory:
print item
Guide to Programming with Python
20
Using Tuples
 Tuples are a kind of sequence (like strings) so can:
–
–
–
–
Get length with len()
Iterate through elements with for loop
Test for element membership with in
Index, slice, and concatenate
Guide to Programming with Python
21
Using len() and in with Tuples
 The len() function with tuples
– Just as with strings, returns number of elements
print "You have", len(inventory), "items."
 The in operator with tuples
– Just as with strings, tests for element membership
if "healing potion" in inventory:
print "You will live to fight another day."
Guide to Programming with Python
22
Indexing & Slicing Tuples
inventory = ("sword", "armor", "shield",
"healing potion")
inventory[0] ?
inventory[0][1]?
inventory[0:2]?
Guide to Programming with Python
23
Tuple Immutability
>>> inventory = ("sword", "armor", "shield",
"healing potion")
>>> inventory[0] = "battleax"
TypeError: object doesn't support item assignment
 Tuples are immutable
 But can create new tuples from existing ones
Guide to Programming with Python
24
Concatenating Tuples
>>> inventory = ("sword", "armor", "shield",
"healing potion")
>>> chest = ("gold", "gems")
>>> inventory += chest
>>> print inventory
('sword', 'armor', 'shield', 'healing potion',
'gold', 'gems')
 Concatenation operator, +, works with tuples just
like with strings
 The Hero’s Inventory Game (to demo creating,
indexing, slicing, and concatenating tuples)
Guide to Programming with Python
25
The Word Jumble Game
Figure 4.1: Sample run of the Word Jumble game
This jumble looks “difficult.”
Guide to Programming with Python
26
Planning the Word Jumble Game
The jumble creation section was planned first in
pseudocode
Create an empty jumble word
While the chosen word has letters in it
extract a random letter from the chosen word
add the random letter to the jumble word
Guide to Programming with Python
27
Summary
 An ordered list of elements is called what?
– A sequence
 To move through a sequence, in order, is called what?
– Iterate
 When a for loop iterates over a sequence, how many
times does it perform its loop body?
– As many times as there are elements in the sequence
 What would range(20,10,-2) return?
– [20, 18, 16, 14, 12]
 What would len(range(20,10,-2)) return?
– 5
Guide to Programming with Python
28
Summary (continued)
 If I use the in operator to test for element membership in a
tuple, what does it return if the element is there?
– True
 What is the name of the technique used to access a specific
element of a sequence?
– Indexing
 Match the following pairs of words:
– mutable
– immutable
unchangeable
changeable
 Strings are immutable sequences, true or false?
– True
 Constants are values that are meant to change, true or false?
– False
Guide to Programming with Python
29
Summary (continued)
 String concatenation adds onto an existing string, true or false?
– False, it creates brand-new strings
 What does None evaluate to when treated as a condition?
– False
 Slicing creates a copy of a discontinuous collection of elements
from a sequence, true or false?
– False, it only copies a continuous segment of elements from a
sequence
 A tuple is an immutable sequence of elements of what variable
type?
– Any!
 The concatenation operator, +, works with tuples just like with
strings, true or false?
– True
Guide to Programming with Python
30