See Section 11.3 for the exercises.
Coding basic loops. As you work through this
exercise, you'll wind up with code that looks like
the following: >>> S = 'spam'
>>> for c in S:
... print ord(c)
...
115
112
97
109
>>> x = 0
>>> for c in S: x = x + ord(c) # Or: x += ord(c)
...
>>> x
433
>>> x = [ ]
>>> for c in S: x.append(ord(c))
...
>>> x
[115, 112, 97, 109]
>>> map(ord, S)
[115, 112, 97, 109] Backslash characters. The example prints the
bell character (\a) 50 times; assuming your
machine can handle it, and when run outside of IDLE, you may get a
series of beeps (or one long tone, if your machine is fast enough).
Hey—we warned you. Sorting dictionaries. Here's
one way to work through this exercise (see Chapter 6 if this doesn't make sense).
Remember, you really do have to split the keys and
sort calls up like this, because sort returns
None. In Python 2.2, you can iterate through
dictionary keys directly without calling keys
(e.g., for key in D:), but the keys list will not
be sorted like it is by this code: >>> D = {'a':1, 'b':2, 'c':3, 'd':4, 'e':5, 'f':6, 'g':7}
>>> D
{'f': 6, 'c': 3, 'a': 1, 'g': 7, 'e': 5, 'd': 4, 'b': 2}
>>>
>>> keys = D.keys( )
>>> keys.sort( )
>>> for key in keys:
... print key, '=>', D[key]
...
a => 1
b => 2
c => 3
d => 4
e => 5
f => 6
g => 7 Program logic alternatives.
Here's sample code for the solutions. Your results
may vary a bit; this exercise is mostly designed to get you playing
with code alternatives, so anything reasonable gets full credit: L = [1, 2, 4, 8, 16, 32, 64]
X = 5
i = 0
while i < len(L):
if 2 ** X == L[i]:
print 'at index', i
break
i = i+1
else:
print X, 'not found'
L = [1, 2, 4, 8, 16, 32, 64]
X = 5
for p in L:
if (2 ** X) == p:
print (2 ** X), 'was found at', L.index(p)
break
else:
print X, 'not found'
L = [1, 2, 4, 8, 16, 32, 64]
X = 5
if (2 ** X) in L:
print (2 ** X), 'was found at', L.index(2 ** X)
else:
print X, 'not found'
X = 5
L = [ ]
for i in range(7): L.append(2 ** i)
print L
if (2 ** X) in L:
print (2 ** X), 'was found at', L.index(2 ** X)
else:
print X, 'not found'
X = 5
L = map(lambda x: 2**x, range(7))
print L
if (2 ** X) in L:
print (2 ** X), 'was found at', L.index(2 ** X)
else:
print X, 'not found'
|