2 回答

TA貢獻1776條經驗 獲得超12個贊
所以你得到的錯誤是因為你試圖將行(first_row和last_row)添加到標量int值(col_sum),因此無法添加連接列表而不是int。
要獲得二維數組的周長,您可以將最后一行和第一行以及最后一列和第一列相加,然后減去最后的角點,除非有特定原因不能這樣做。就像是:
def perimeter_sum(arr2d):
first_row = sum(arr2d[0])
last_row = sum(arr2d[-1])
first_col = sum([arr2d[i][0] for i in range(len(arr2d))])
last_col = sum([arr2d[i][-1] for i in range(len(arr2d))])
# sum with double counted corners
s = sum([first_row, last_row, first_col, last_col])
# decrement once for each corner
return (s - arr2d[0][0] - arr2d[0][-1] - arr2d[-1][0] - arr2d[-1][-1])

TA貢獻1900條經驗 獲得超5個贊
您可以使用它sum()來獲取列表的總計。用它來求第一行和最后一行的總和。然后循環遍歷中間行并添加第一個和最后一個元素。
def perimiter_sum(arr2d):
sum = sum(arr2d[0]) + sum(arr2d[-1])
for row in arr2d[1:-2]:
sum += row[0] + row[-1]
return sum
該循環不包括第一行和最后一行,因此您不會兩次包含角點。
添加回答
舉報