Python代码触发'int'和'list'加法不支持报错的原因及修复方法
错误触发原因
你定义的z函数使用了*scores可变参数语法,该语法会将调用时传入的所有位置参数打包为一个元组赋值给scores变量。
你调用z(x)时,x是已经转换完成的整数列表,此时scores实际收到的是([100, 90, 80, 70, 60],)——仅包含1个列表元素的元组。执行sum(scores)时,函数会尝试将元组内的元素累加,默认初始值为int类型的0,0和列表相加就触发了该类型错误。
修复方案
你可以二选一修改:
- 调用函数时对列表做解包处理,将代码最后一行的
z(x)改为z(*x)。*x会把列表内的每个整数拆分为独立的位置参数传入z函数,此时scores会得到由所有分数组成的元组,原有计算逻辑可正常运行。 - 修改函数定义,去掉可变参数标识,将
def z(*scores):改为def z(scores):,让函数直接接收列表类型的参数即可。
修正后可运行代码示例(方案1)
def z(*scores): a=min(scores) b=max(scores) c=sum(scores)/len(scores) print(f"min : {a}\nmax : {b}\naverage : {c}") y = input("type all scores. ex)100, 90, 80, 70, 60\n") x = y.split(", ") x = list(map(int, x)) z(*x)
内容的提问来源于stack exchange,提问作者Cho
相关产品推荐
相关产品推荐

