Quiz 4 Information

Quiz details

Quiz Logistics

Material covered

The quiz will focus on the material that we have discussed in class during Week 4, modules 7 and 8.

You must be familiar with concepts that were introduced in the pre-class videos, in-class discussion, or on the problem sets that were not covered in the videos or readings.

Preparing for the quiz

Additional practice problems

  1. Draw one or more memory diagram (similar to what we have seen in Python Visualizer) to illustrate the execution of the following Python program:

    a = [1, 2, 3, 4]
    b = a
    c = a[:]
    a[3] = 5
    b[1] = 7
    c[2] = 9
    print('a is', a)
    print('b is', b)
    print('c is', c)
    

    In addition, write a few sentences that refer to your diagram(s) and that explain the result of the program.

  2. Draw memory diagrams that demonstrate why we get different results from the following two Python programs:

    ### Program 1 ###
    def foo(a):
        a = 2 * a
        return
    
    b = [1, 2, 3]
    for i in range(len(b)):
        foo(b[i])
    
    print('b is', b)
    
    ### Program 2 ###
    def bar(lst, i):
        lst[i] = 2 * lst[i]
        return
    
    b = [1, 2, 3]
    for i in range(len(b)):
        bar(b, i)
    
    print('b is', b)
    

    In addition, write a few sentences that refer to your diagrams and that explain the difference in output.

  3. Write a function create_2d that takes as input two integers height and width, and that creates and returns a 2D list (i.e., a list of lists) with values that are the row number multiplied by the column number. For example:

    >>> create_2d(3, 5)
    [[0, 0, 0, 0, 0], [0, 1, 2, 3, 4], [0, 2, 4, 6, 8]]
    
  4. Write a function add_one that takes an input grid that is a 2D list (a list of lists). Your function should add 1 to each element of grid, but it should not return anything. For example:

    >>> my_grid = create_2d(3, 5)
    >>> add_one(my_grid)
    >>> my_grid
    [[1, 1, 1, 1, 1], [1, 2, 3, 4, 5], [1, 3, 5, 7, 9]]
    
  5. Consider the following dictionary:

    restaurants = {"Giordano": "(773) 262-1313",
                "Leona": "(773) 267-7287",
                "The Village", "(312) 332-7005"}
    

    Evaluate the following expressions, in order:

    a. restaurants["Leona"]

    b. restaurants["(773) 262-1313"]

    c. "Giordano" in restaurants

    d. "Kiltie" in restaurants

    e. list(restaurants.keys())

    f. for name in restaurants: print(name)

    g. len(restaurants)

  6. Write expressions do the following:

    a. add the phone number “(262) 567-2648” for “Kiltie” to the dictionary restaurants.

    b. print out each of the restaurants names and phone numbers, one per line