-
Name the five steps to top-down
problem solving as described in the text.
(It's okay if you can't remember the exact wording;
the concepts are more important.)
[5]
Write, Apprehend, Design, Execute, Scrutinize
___________ |
___________ |
___________ |
___________ |
___________ |
-
Describe the five software control/flow
abstractions mentioned in the text.
For each one, also name a corresponding Python language construct.
[5]
Sequence (newlines in Python), Selection (if/elif/else),
Repetition (while/for), Composition (def/functions), Parallelism
___________ |
___________ |
___________ |
___________ |
___________ |
- Fill in the blank: [13]
- "Computers are __________tools, and
computing scientists are ______________toolsmiths."
- In statically-typed languages, before we can use the value of a
variable for the first time in
a program, we need to
______________declare and ________________initialize it.
- True or False (circle one): The word function
is a legal Python identifier. True
- The Python method on file handles that ensures that all pending
write()s have been committed to disk is called
________________ flush().
- The Python function which counts the number of characters
in a string is ___________len().
- The standard function that converts strings to ALL-CAPS is found in
the
___________string standard library and is named
____________upper().
- The standard output I/O channel is found in the
________sys standard library and is named ___________stdout.
- A procedure that invokes itself is called a
___________________recursive procedure.
- A requirement imposed by a function upon its parameters, such that
the correctness of the result is not guaranteed if the requirement is
not met, is called a __________________precondition / predicate.
-
Recall that in Python int/float/bool parameters are essentially passed
by value, and lists/dictionary parameters are essentially
passed by reference. What is printed by the following block of Python
code?
[4]
def double_me(x):
x *= 2
y = 3
z = range(3)
double_me(y)
double_me(z)
print 'y =', y, ', z =', z
y = 3, z = [0, 1, 2, 0, 1, 2]
The variable y points to an immutable object (the float 3.0) and is
roughly pass-by-value, so it is not affected by double_me().
The variable z points to a mutable object (the list range(3)) and is
roughly pass-by-reference, so it is changed by double_me().
The real scoop on Python parameter passing is
call-by-object
and is a bit more complicated; it has to do with Python's
object-oriented roots.
-
Name three out of the five possible modes in which one can open a file
in Python, and give example Python code for each. [5]
read: open('file.txt', 'r')
write: open('file.txt', 'w')
read+write: open('file.txt', 'r+')
append: open('file.txt', 'a')
binary: open('file.txt', 'b')
-
Use the Python range() function to create this list:
[ 5, 3, 1, -1 ]. [3]
range(5, -2, -2) or range(5, -3, -2)
-
Assume that the variable numApples has integer type.
Write a line of pseudocode that would work in a dynamically-typed
language like Python but would fail in a statically-typed language
like C or M2. [2]
numApples = "Hello, World!", or
numApples = 71.3, or
numApples = False, etc.
-
Evaluate each of the following Python expressions
exactly as given,
or if it produces an error, describe the error.
Assume each expression is independent of the others.
Assume all necessary imports have been done.
[9]
- (5 % 12 == 2) or False False
- 2+2*2**2 10
- 3*'x' + 2*'y' + 'x' 'xxxyyx'
- not False or (12 % 0) True
- (3 > 2.9) and (15/3 = 5) SyntaxError (assign)
- "%s%04d.jpg" % ('img-', 99.9) 'img-0099.jpg'
- '%01.3f' % (16 % 0) ZeroDivisionError
- 2*range(3) [ 0, 1, 2, 0, 1, 2 ]
- chr(ord('H') + 2) 'J'
-
What is output by the following block of Python code? [4]
myList = [ ('a', 'b'), range(5), 'xyz', [ [2, 3, 4], 5] ]
for item in myList:
print len(item),
'2 5 3 2 '
-
Tell me everything you know about libraries in the context of
programming. [4]
Libraries are containers/groups of functions and other entities
provided for other programmers to use. A well-designed library will
have a clear public interface (header or definition file) which tells
the programmer what functionality the library provides and how to
invoke its functions. The other component of the library is its
implmentation, which is the code or bodies of its functions. The
implmentation will often be hidden from the user.
Some examples of standard Python libraries include math, sys, string,
random. An example of a function provided by a library is
math.sin(). An example of a non-function entity provided by a library
is math.pi; it is a constant rather than a function.
-
Write a Python function transpose() which takes a matrix (2D list)
as a parameter and returns a new matrix, where each entry (i,j)
of the new matrix is taken from entry (j,i) in the old matrix.
Docstrings/comments not necessary but helpful for partial credit.
[6]
For example, the transpose of the matrix
is the matrix
def transpose(matrix):
"""Return the transpose of a matrix (2D list).
pre: m must be a rectangular 2D list, all rows of same length."""
numRows = len(matrix[0])
numCols = len(matrix)
tpose = [0] * numRows
for row in range(numRows):
tpose[row] = [0] * numCols
for col in range(numCols):
tpose[row][col] = matrix[col][row]
return tpose