Written response 怎么练代码
官方给这场 exam 写的 format 是 written response,两小时 writing time,在 Inspera 上作答,具体形式到 Week 10 的 lecture 才公布。Assessment Guide 没有写答题时能不能运行 Python。
具体形式公布之前,我建议练代码时先不点运行:拿到一段代码,写下每一行执行之后变量的值和类型,写完再回到 Notebook 核对。下面这几段出自 Week 4 到 Week 9 的内容,运行时都不会在写错的地方报错,逐行写下来比等报错更容易看出结果哪里不对。它们是练习用的例子,不代表正式 exam 的题目。
打印出来的值没有进入变量
Week 4 的练习里有一个把两个值相加的函数:
def combine(x, y):
try:
return x + y
except TypeError:
print("incompatible")
values = [
combine(4, 6),
combine("4", "6"),
combine(4, "6"),
]
print(values)
屏幕上先出现 incompatible,下一行是 [10, '46', None]。三次调用里只有 combine(4, "6") 触发 TypeError。它进入 except 以后只打印了一句话,函数走到结尾也没有 return,所以这次调用交回的值是 None,打印的文字没有进入 values。
combine("4", "6") 没有任何提示。两个字符串相加是拼接,Python 正常返回 '46'。如果函数要做数值加法,这个结果已经错了,try 和 except 拦不到,要另外检查类型。
把 sort 的结果赋值回去
items.sort() 直接重排原来的列表,返回值是 None。写成 items = items.sort() 以后,items 接到的是 None,排好序的列表再也取不到。这一行本身不报错,要到后面写 items[0] 时才出现 TypeError,报错的那一行已经不是写错的那一行。
相近的写法对原对象的处理不一样:
| 写法 | 原对象 | 返回 |
|---|---|---|






