首页上一页 1 下一页尾页 9 条记录 1/1页
自定义函数中调用Python内置的sum函数时报错
发表在Python图书答疑
2021-09-16
《Python从入门到项目实践》第11章 用函数实现模块化程序设计
是否精华
是
否
版块置顶:
是
否
设置时间:
非永久
永久
起始时间:
结束时间:
是否扣分:
是
否
def mean(*args): s = sum(args) return s / len(args) #--- d = [1,2,3,4] m = mean(d)
精彩评论 9
2021-09-16
板凳
Python的语言格式非常严格,你就是语言格式出错了。变量s前的空格要么是一个Tab键,要么是4个空格键。
还有不能把数组当参数传给函数,只能把数组元素当参数传给函数,你完全就是前者。
修改后的代码:
# 开发人员:公输政 def mean(*args): for i in range(len(args)): # 执行for循环 s = sum(args[i]) # 数组元素当做参数 print(s) # 打印变量s d = (1, 2, 3, 4) # 定义数组d print('数组长度为:') print(len(d)) print('\n') print('数组元素的和为:') mean(d) # 调用mean函数
运行结果:
2021-09-16
5L
mean函数是求均值.
正确代码是这样的:
def mean(*args): s = sum(*args) return s / len(*args) #--- d = [1,2,3,4] m = mean(d) print(m)
在mean函数中,args把参数放入到一个元组中,形如: ([1, 2, 3, 4],)
当调用sum(args)时就会报错 不支持 int+list的运算.
args把参数放入到一个元组中, 这个操作形参了二级指针, 用C++中的写法,加个 * 间接寻址运算符,直接读取原始数据.
测试:
def mean(*args): print(args) #([1, 2, 3, 4],) print(*args) # [1, 2, 3, 4] print(len(args)) # 1 print(len(*args)) # 4 s = sum(*args) return s / len(*args)
2021-09-16
7L
公输政 发表于2021-09-16 14:55
Python的语言格式非常严格,你就是语言格式出错了。变量s前的空格要么是一个Tab键,要么是4个空格键。
还有不能把数组当参数传给函数,只能把数组元素当参数传给函数,你完全就是前者。
修改后的代码:
# 开发人员:公输政 def mean(*args): for i in range(len(args)): # 执行for循环 s = sum(args[i]) # 数组元素当做参数 print(s) # 打印变量s d = (1, 2, 3, 4) # 定义数组d print('数组长度为:') print(len(d)) print('\n') print('数组元素的和为:') mean(d) # 调用mean函数
运行结果:
Python中一切都是对象
函数可以接收任何形式的数据类型包括数组.