## Class 30 — November 7

#### You are so controlling

While I can go on – I do not repeat myself – Always a new way

### Agenda

• Consider module development
• Problem solve

### Want to be a TA next semester

• url.py — adds web dictionary support

### Problem

• Design a very simple tester que_pasa.py for module translate.py.
• Sample translation text phrases

est la baguette fraiche

dubailte dubailte kesusahan und guaio

umucu di una pantanoso neidr

dans der ketel bouyi und cuire

oog di tritons und kaki di rano

yun di fledermoyz und lingua di chien

viperae foarke und blyn cuc stik

moo fotur und ovlet tis

pre eng viehatys di voimakas guaio

mag un inferno salda bouyi und bombolla

### Module of the day aid.py

• Complete the implementation of three functions. Simple tester program abet.py is available to help you test your module `aid` functions.
• None of your functions should get input or print output.
• Examine and think about algorithms for the problems. However, do not write any code before class.

#### Function `rotate( x )`

• Updates list `x` by moving the last element of list `x` (if any) to the beginning of list `x`. This type of list transformation is often called a circular shift.
• In carrying out its action, the function neither returns anything nor prints anything — it only modify the contents of list `x` in place (e.g., by list-modification methods like `pop()`, `append()`, and `insert()`, or by directly modifying individual elements of list `x`.
• The following code segment from abet.py demonstrates it usage.

x1 = []

x2 = [ 3 ]

x3 = [ 3, 1, 4, 1, 5, 9 ]

x4 = [ 'p', 'e', 'c', 'u', 'l', 'a', 't', 'i', 'o', 'n', 's' ]

aid.rotate( x1 ) ; print( x1 )

aid.rotate( x2 ) ; print( x2 )

aid.rotate( x3 ) ; print( x3 )

aid.rotate( x4 ) ; print( x4 )

• The segment produces as output:

[]

[3]

[9, 3, 1, 4, 1, 5]

['s', 'p', 'e', 'c', 'u', 'l', 'a', 't', 'i', 'o', 'n']

#### Function `rotate_k_times( x, k )`

• Updates list `x` by performing `k` circular shifts.
• In carrying out its action, the function neither returns anything nor prints anything — it only modify the contents of the list `x` in place. The following code segment from abet.py demonstrates it usage.

x1 = []

x2 = [ 3 ]

x3 = [ 3, 1, 4, 1, 5, 9 ]

x4 = [ 'p', 'e', 'c', 'u', 'l', 'a', 't', 'i', 'o', 'n', 's' ]

aid.rotate_k_times( x1, 2 ) ; print( x1 )

aid.rotate_k_times( x2, 3 ) ; print( x2 )

aid.rotate_k_times( x3, 4 ) ; print( x3 )

aid.rotate_k_times( x4 ,5 ) ; print( x4 )

• The segment produces as output:

[]

[3]

[4, 1, 5, 9, 3, 1]

['t', 'i', 'o', 'n', 's', 'p', 'e', 'c', 'u', 'l', 'a']

#### Function `common( x, y )`

• Returns a new list whose elements are those elements in `x` that are also in `y`. The ordering of elements in the return list should reflect their ordering in `x`.
• The function does not modify parameters `x` and `y` in any way.
• The following code segment from abet.py demonstrates it usage.

x1 = [] ; y1 = []

x2 = [ 3 ] ; y2 = []

x3 = [ 1 ] ; y3 = [ 3, 1, 4 ]

x4 = [ 2, 7, 1, 8, 2, 8, 1, 8 ] ; y4 = [ 2, 8, 4, 5, 9, ]

z = aid.common( x1, y1 ) ; print( z )

z = aid.common( x2, y2 ) ; print( z )

z = aid.common( x3, y3 ) ; print( z )

z = aid.common( x4, y4 ) ; print( z )

• The segment produces as output:

[]

[]

[1]

[2, 8, 2, 8, 8]

### To do

• Review homework solutions to prepare for the test