I l@ve RuBoard

### C.3 Chapter 3

1. Coding basic loops. If 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)
...
>>> x
433

>>> x = []
>>> for c in S: x.append(ord(c))
...
>>> x
[115, 112, 97, 109]

>>> map(ord, S)
[115, 112, 97, 109]```
2. Backslash characters. The example prints the bell character (\a) 50 times; assuming your machine can handle it, you'll get a series of beeps (or one long tone, if your machine is fast enough). Hey梬e warned you.

3. Sorting dictionaries. Here's one way to work through this exercise; see Chapter 2 if this doesn't make sense:

```>>> 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```
4. Program logic alternatives. Here's how we coded the solutions; your results may vary a bit.

1. ```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:
2. ```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:
3. ```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:
4. ```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:
5. ```X = 5