python类的函数值不对问题

想问下这个函数是哪里有问题吗 sum3(1,2,3) 不应该是1.8几吗为什么是1呢

img

img

  • 你可以参考下这个问题的回答, 看看是否对你有帮助, 链接: https://ask.csdn.net/questions/7657292
  • 这篇博客也不错, 你可以看下python内置函数sum()的参数是多维数组时
  • 除此之外, 这篇博客: python中的数学函数汇总中的 三、sum()函数——求和计算 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 功能:函数对列表元组和集合等序列进行求和计算
    语法: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
    
  • 以下回答由chatgpt基于相关博客总结生成:

    根据参考资料和问题描述,我们可以看出问题所在:

    问题所在: 在参考资料的段落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) )