< Back

Lab 33: Test Review


Practice 1

Write a function clamp_2d_list(a_2d_list, minimum_value, maximum_value), which takes 3 parameters. The first parameter is a 2-dimensional list (not necessarily square) of integers, and the final two parameters are also integers. Your function should return a 2 dimensional list of the same dimensions of a_2d_list, where each value in the 2-d list has been clamped between the specified minimum and maximum values.

    >>> my_list = [[-2, -1], [0, 1]]
    >>> print(clamp_2d_list(my_list, -1, 0))
    [[-1, -1], [0, 0]]
  



Practice 2

Write a function called remove_dups(a_list), which takes a two dimensional list of items as a parameter. This function should return a new list, which contains all of the unique items from the input list.

    >>> in_list = [0, 1, 2, 1, 2, 3]
    >>> print(remove_dups(a_list))
    [0, 1, 2, 3]
  



Practice 3

Write a function called generate_vigenere(), which takes 0 parameters. Your function should return a dictionary that represents a Vigenère square. Your function should generate this dictionary dynamically, as opposed to hard-coding the values. For example:

    >>> square = generate_vigenere()
    >>> for key in square:
    ...     print(key, "->", square[key])

    'a' -> ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k',
    'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x',
    'y', 'z']
    'c' -> ['c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm',
    'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z',
    'a', 'b']
    'b' -> ['b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l',
    'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y',
    'z', 'a']
    'e' -> ['e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o',
    'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 'a', 'b',
    'c', 'd']
    'd' -> ['d', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n',
    'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 'a',
    'b', 'c']
    .
    .
    .