Time: Wed 10/18/17 6 pm
Draw the environment diagram that results from executing the code after the entire program is finished. No errors occur during the execution of this example.
def scramble(egg): return [egg, over(egg)] def over(easy): easy = [[easy], 2] return list(easy) egg = scramble([12, 24])
For each of the following code fragments, draw the final state of the program in boxes and arrows.
L = Link(1, Link(2)) P = L Q = Link(L, Link(P)) P.rest.rest = Q
L = Link.empty for i in range(3): L = Link(i, L)
P = Link(0, Link(1, Link(2))) def crack1(L): if L is Link.empty: return (Link.empty, Link.empty) L1, L2 = crack1(L.rest) return (Link(L.first, L2), L1) Q, R = crack1(P)
P = Link(0, Link(1, Link(2))) def crack2(L): if L is Link.empty: return (Link.empty, Link.empty) L1, L2 = crack2(L.rest) L.rest = L2 return (L, L1) Q, R = crack2(P)
Several scenarios while you are interacting with the Python interpreter.
'abc' # 'abc' - There are quotation marks around it 1 # 1 - There's no quotation mark around it
However, things can become interesting working with custom objects in terms of
class Foo: def __repr__(self): return 'abc' f = Foo() f # abc - There's no quotation mark around it
Compared to the following:
class Bar: def __repr__(self): return "'abc'" b = Bar() b # 'abc' - There are quotation marks around it
However, when you are simply printing something out with
print(), Python will display the
__str__() of the object you passed to it.
When you are querying an statement/expression in REPL, Python will display the
__repr__() of the object (if not
None). You can think the following...
print(repr('howdy')), meaning you are printing out the repr for the string
__str__() needs to return strings.