亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

收到此錯誤: TypeError: can only concatenate list

收到此錯誤: TypeError: can only concatenate list

烙印99 2023-12-09 17:19:21
我正在嘗試編寫這個程序來計算二維列表的周長(基本上將其視為矩形),但我不斷收到此錯誤。我還需要一些幫助來弄清楚如何對“矩形”的列求和而不將角添加兩次。提前謝謝你的幫助def perimeter_sum(arr2d):    col_sum=0    first_row=arr2d[0]    last_row=arr2d[-1]    for i in range(len(arr2d)):        col_sum=arr2d[1+i][0]+arr2d[1+i][-1]        sum = first_row + last_row+col_sum    return suma2d = [[1,2,3,4],[5,6,7,9],[9, 0, 1,2]] #error occurred hereperimeter_sum(a2d)
查看完整描述

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])


查看完整回答
反對 回復 2023-12-09
?
梵蒂岡之花

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

該循環不包括第一行和最后一行,因此您不會兩次包含角點。


查看完整回答
反對 回復 2023-12-09
  • 2 回答
  • 0 關注
  • 145 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號