取元素、按下标取
(每道题开头都有同一段:类型用字符串表示,列表类型写作 "list[int]";list_of(t) 拼列表类型、elem_type(lt) 取元素类型、index_type(lt, it) 下标取一个、append_ok(lt, vt) 判能不能追加。)
对 list[int] 取元素类型、用 int 下标取一个、用 str 下标取一个:
def list_of(t):
"""元素类型 t 的列表类型,如 int → "list[int]"。"""
return "list[" + t + "]"
def elem_type(lt):
"""从 "list[int]" 取出元素类型 "int";不是 list 类型交回 "ERR"。"""
if lt.startswith("list[") and lt.endswith("]"):
return lt[5:-1]
return "ERR"
def index_type(lt, it):
"""对 list[T] 用类型为 it 的下标取一个:下标必须是 int,得到 T;否则 "ERR"。"""
if it != "int":
return "ERR"
return elem_type(lt)
def append_ok(lt, vt):
"""往 list[T] 里 append 一个类型为 vt 的值:vt 和 T 一样才行。"""
return elem_type(lt) == vt
print(elem_type("list[int]") + "/" + index_type("list[int]", "int") + "/" + index_type("list[int]", "str"))
全部评论