在Python中添加负数时,为什么我的代码给我错误的结果?

时间:2018-10-02 01:13:17

标签: python sum

def hourglassSum(arr):
     totSum = 0
     sum = 0
   for j in range(4):
     for i in range(4):
        sum = arr[j][i] + arr[j][i+1] +arr[j][i+2]
        print(sum)
        if (sum > totSum):
            totSum = sum
   return totSum

我的程序的目的是从数组中找到一些元素并将它们添加在一起。如果一个和大于另一个和,则返回最大和。该代码适用于正数。但是不适用于负数。有人可以帮我解释原因吗?

1 个答案:

答案 0 :(得分:0)

它不起作用,因为负数之和小于0。同时,totSum开始是0,这就是sum > totSum最终永远不会成为True的原因。

这是修复它的一种方法:

import math
def hourglassSum(arr):
    totSum = -math.inf
    for j in range(4):
        for i in range(4):
            sum = arr[j][i] + arr[j][i+1] +arr[j][i+2]
            if (sum > totSum):
                totSum = sum
   return totSum

当然,这种事情总会有一线希望:

def hourglassSum(arr):
    return max(arr, key=sum)