拼函数类型、取返回
(每道题开头都有同一段:函数类型写作 "(int,str)->bool";fun_type(params, ret) 拼函数类型、ret_of(ft) 取返回类型、call_type(ft, args) 按实参类型列表调用、个数类型都对才回返回类型否则 "ERR"。)
拼一个收 (int,str)、返回 bool 的函数类型,并取它的返回类型:
def fun_type(params, ret):
"""形参类型列表 + 返回类型 → 函数类型字符串,如 (["int","str"], "bool") → "(int,str)->bool"。"""
return "(" + ",".join(params) + ")->" + ret
def ret_of(ft):
"""从函数类型取返回类型,如 "(int,str)->bool" → "bool"。"""
return ft.split("->")[1]
def call_type(ft, args):
"""按函数类型 ft 用实参类型列表 args 调用:个数和类型都对上,交回返回类型;否则 "ERR"。"""
inside = ft[1:ft.index(")")]
params = inside.split(",") if inside else []
if len(params) != len(args):
return "ERR"
for p, a in zip(params, args):
if p != a:
return "ERR"
return ret_of(ft)
ft = fun_type(["int", "str"], "bool")
print(ft + "/" + ret_of(ft))
全部评论