一个sum函数有关的python提问

今天刚接触Python,学到sum函数的时候书上说只能求和int,然后我拿小数试了一下,为什么会是下面这样的呢?我一开始以为会直接弹error

img

精度问题,你写的1.2在你看来就是1.2,实际代码运行的时候可能是1.2000000001或者1.20000000002等等,所以你用sum的时候是有问题的

你什么版本的

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 这篇博客: Python中sum函数的说明与代码中的 笔者的理解 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:

    以sum(a,b)为例,对矩阵a中数值相加:2+1=3,

    b中的两个数分别作为起始数(start),将3与它们分别相加3+5 = 8, 3+3 = 6,

    sum(a,b)输出结果为[8, 6]

    如此应该可以解释为什么sum(c, b)与sum(b, c)结果不同

    代码如下:

    import numpy as np
    a = np.array([2, 1])
    b = np.array([5, 3])
    c = np.array([5, 4])
    
    print("sum(a,b):",sum(a,b))             # 输出结果:[8 6]
    print("sum(sum(a,b)):",sum(sum(a,b)))   # 输出结果:14
    
    print("sum(c,b):",sum(c,b))             # 输出结果:[14 12]
    print("sum(sum(c,b)):",sum(sum(c,b)))   # 输出结果:26
    
    print("sum(b,c):",sum(b,c))             # 输出结果:[13 12]
    print("sum(sum(b,c)):",sum(sum(b,c)))   # 输出结果:25
  • 以下回答来自chatgpt:

    问题解答:

    Python的sum函数对小数也能求和的原因是Python中的sum函数在对可迭代对象进行求和时,会先将可迭代对象中的每个元素转换为数值类型,然后再进行求和计算。这意味着sum函数可以对不同类型的数值进行求和,包括整数和小数。

    具体来说,sum函数在对可迭代对象进行求和时,会依次将可迭代对象中的每个元素传入到sum函数中,并将它们转换为数值类型后相加。如果可迭代对象中的元素不是数值类型,将会触发TypeError错误。

    下面是一个示例代码,展示了sum函数对小数进行求和的例子:

    num_list = [1.5, 2.5, 3.5]
    result = sum(num_list)
    print(result)  # 输出6.5
    

    在这个示例中,num_list是一个包含三个小数的列表。sum函数将这三个小数分别传入,并将它们相加得到结果6.5。

    另外需要注意的是,sum函数还可以接受一个可选的start参数,用于指定相加的起始值。如果不指定start参数,默认为0。下面是一个示例代码,展示了使用start参数的例子:

    num_list = [1.5, 2.5, 3.5]
    result = sum(num_list, 10)
    print(result)  # 输出16.5
    

    在这个示例中,start参数被设置为10,sum函数将先将10与num_list中的小数相加,然后再将它们的和返回。

    综上所述,Python的sum函数对小数也能求和的原因是sum函数在对可迭代对象进行求和时,会将可迭代对象中的元素转换为数值类型后相加。可以通过传入start参数来设置相加的起始值。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^