I got them all right, and I agree that there were many gotchas. For example, the ones about the matrix, the array modification, etc. The only thing worse would have been something like:
https://www.pastery.net/mbeghh/
(it'll print 3)
https://www.pastery.net/mbeghh/
(it'll print 3)
def do_stuff(mylist=[]):
mylist.append("thing")
Which will lead to the list containing N items after N invocations (i.e. the second function call won't start with an empty list).