DekGenius.com
[ Team LiB ] Previous Section Next Section

B.3 Part III, Statements and Syntax

See Section 11.3 for the exercises.

  1. 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]
  2. 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.

  3. 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
  4. 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'
    [ Team LiB ] Previous Section Next Section