Strings, part 2 Victor Norman CS104 Calvin College

advertisement
Strings, part 2
Victor Norman
CS104
Calvin College
Item-based vs Index-based Iteration
• item-based:
for <item> in <sequence>:
– <item> is each item in the sequence.
• index-based:
for <idx> in range(len(<sequence>)):
– code in the body has the index of what item to
deal with, as someSeq[idx]).
Examples of each
• Item-based
for cheese in cheeses:
print(cheese)
• Index-based
for idx in range(len(cheeses)):
print(cheeses[idx])
When to use which?
• item-based:
– simpler syntax, easier to read.
– use when code does not need to know where the item
is in the sequence.
• index-based:
– harder to read.
– accessing the item is more complicated (using
indexing operator).
– code can know where the item is in the sequence.
– code can access other items around the item.
Example
What if we want to print out the items from a
list cheeses like this:
1. Cheddar
2. Gouda
3. Venezuelan Beaver Cheese
Need to use index-based:
Example continued
for idx in range(len(cheeses)):
# idx starts at 0, but we want to
# print out as if indices start at 1,
# so add 1.
print(str(idx + 1) + “.”, cheeses[idx])
Accumulator Pattern
resStr = “”
for ch in someStr:
if somethingAbout(ch):
resStr = resStr + ch
• Used item-based, because didn’t care about
where we were in the string.
• someStr is a sequence, so syntax is legal.
• results accumulated in resStr
Whiteboard activity
Given this string:
message = “greetings from the planet zorgon”
write code to print this out. (Use split().)
greetings
from
the
planet
zorgon
Whiteboard Activity
Write the following function that returns a string
that is the same as s except that spaces are
removed.
def remove_spaces(s):
while Loop vs Index-Based for Loop
(Suppose s is a string or a list.)
for i in range(len(s)):
code here uses s[i]
i = 0
while i < len(s):
use s[i]
i = i + 1
# better: i += 1
in and not in
• very useful for searching a string to see if a
sub-string is in the string or not.
• returns Boolean: so you know if the target is in
the string, but don’t know where.
if “wherefore” in hamletText:
print(“art thou”)
Optional Parameters
• Terminology:
– parameters may be optional in the call.
– in function definition, optional params
• must appear on the end of the parameter list.
• indicated by being given a default value.
• Code in the function is exactly the same.
Examples
def weird(a, b, c=3):
return a + b + c
print(weird(3, 7))
print(weird(3, 7, 44))
def weirder(a=3, b=4, c=5):
return a + b + c
print(weirder())
print(weirder(7))
print(weirder(7, 8))
print(weirder(7, 8, 9))
Examples
def something(a, b, debug=False):
res = a + b
if debug:
print(“something returning “ + res)
return res
x = something(44, -10)
x = something(44, -10, True)
# turn on debugging
Activity
Write a function that removes certain letters
from a given string. If no letters are given, it
removes all vowels (not including y). You can
assume everything is lowercase. The result is
returned.
def remove_chars(s, <stuff>): # remove from s
Activity continued
Given a string s, write code to call your function
on s to remove all vowels. Then, write a
function call to remove all letters from a to f,
inclusive. Print the results.
Assignment
Download