想问下这个函数是哪里有问题吗 sum3(1,2,3) 不应该是1.8几吗为什么是1呢
功能:函数对列表元组和集合等序列进行求和计算
语法:sum(iterable,start)
例子:
1.计算0-100之间所有偶数的和
evenNumber = []
i = 0
while i <= 100:
if i %2 == 0:
evenNumber.append(i)
i+=1
print(sum(evenNumber))
输出结果:
2550
2.计算二维序列中每个子序列的平均值以及整个序列的平均值
def avg(seq):
totalLen = 0
everySeq =[]
for i in seq:
Len = len(i)
everySeq.append(sum(i))
print(sum(i) / Len)
totalLen += Len
print(sum(everySeq) / totalLen)
avg([[10,12,13],[12,11,15],[2,5,4,2]])
输出结果:
11.666666666666666
12.666666666666666
3.25
8.6
根据参考资料和问题描述,我们可以看出问题所在:
问题所在: 在参考资料的段落0中,sum()函数的功能是计算指定参数与可迭代对象的和,而不是计算可迭代对象中的平均值。所以当调用sum3(1,2,3)时,实际上是计算了1 + 2 + 3的和,结果为6,而不是预期的平均值。
解决方案: 根据问题描述,需要重新编写一个函数来计算可迭代对象中的平均值。
下面是一个示例代码:
def average(*args):
total = sum(args)
avg = total / len(args)
return avg
result = average(1, 2, 3)
print(result)
运行上述代码,输出结果为2.0。
解释: 上述代码定义了一个名为average的函数,使用可变参数(*args)来接收传入的数字。首先使用sum()函数计算数字的总和,然后除以传入数字的个数(使用len()函数)。最后将平均值返回。
调用average(1, 2, 3)时,传入的参数会被保存到args元组中,然后计算总和(1 + 2 + 3 = 6),再除以参数的个数(3),得到平均值2.0。最后将结果返回并打印输出。
此时,调用average(1, 2, 3)将会返回预期的结果2.0,而不是之前的6。
请注意,上面给出的解决方案仅仅是一种可能的解决方案,具体的解决方案可能因具体情况而异。上述代码中的average函数仅适用于计算传入数字的平均值,如果有其他需求,可能需要根据具体情况进行相应的改进。
代码不全,call1是个啥,根本没定义
而且你代码里根本没有任何print
你不放全了鬼知道1.0是哪里打印的
class Calculator(object):
Place_of_Origin = 'made in China'
def __init__(self,color,brand,price):
self.color = color
self.brand = brand
self.price = price
def sum1(self,a,b):
return a+b
def sum2(self,*args):
s = 0
for i in args:
s+=i
return s
def sum3(self,*args):
s = 0
for i in args:
# s+=float(1/i) #如果有小数的时候,建议用round或者float函数
s+=round(1/i,2) #如果有小数的时候,建议用round或者float函数
return s
call1 = Calculator('white','huawei',3500)
print( call1.sum3(1,3,2) )