Python将函数返回的多值传入另一函数时缺失参数报错如何解决
报错原因
getValues()执行后返回的是一个包含2个元素的元组,你直接将这个元组作为单个参数传入askQuestion函数时,函数只接收到了1个位置参数,缺少要求的第二个必填参数curA,因此触发类型错误。
修复方案
你可以任选以下任意一种方式修改调用代码即可解决报错:
- 对返回的元组做解包传参,在参数前加
*即可自动将元组内的元素拆分作为独立参数传入:
askQuestion(*getValues())
- 先接收两个返回值再分别传参:
cur_q, cur_a = getValues() askQuestion(cur_q, cur_a)
其他代码问题提示
你当前的askQuestion函数还存在两处隐性错误需要修正:
- 函数内部
input(question + ": ")使用的question变量未定义,应该替换为你接收的参数curQ - Python字符串是不可变类型,
userA.upper()、userA.replace(" ", "")执行后不会修改原变量,需要重新赋值给userA才会生效,修正后的函数代码如下:
def askQuestion(curQ, curA): userA = input(curQ + ": ") userA = userA.upper() userA = userA.replace(" ", "") # 此处定义变量是因为参数无法直接传递 answer.append('') # 返回标准答案和用户输入的答案 return curA, userA
内容的提问来源于stack exchange,提问作者Joshua Richardson
相关产品推荐
相关产品推荐

