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

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

我在 Python 中編寫了一個代碼來從 5 個元素的數組中找到 4 個元素的最大值和最小值

我在 Python 中編寫了一個代碼來從 5 個元素的數組中找到 4 個元素的最大值和最小值

海綿寶寶撒 2022-06-22 17:37:15
我正在編寫一個代碼來計算最大值和最小值列表的總和。5 個元素列表中的 4 個元素。我的代碼工作正常,直到它被引入到大號的。def miniMaxSum(arr):    sum1=0    small=arr[0]+arr[1]+arr[2]+arr[3]+arr[4]    lar=0    for i in range(0,4):        sum1=0        for j in range(0,4):            if i+j<=4:                sum1+=arr[i+j]            else:                sum1+=arr[(i+j)-5]        if sum1>=lar:            lar=sum1        if sum1<=small:            small=sum1    print("Minimum:",small,"Maximum:",lar)if __name__ == '__main__':    arr = list(map(int, input().rstrip().split()))    miniMaxSum(arr)如果我使用 Small no,我會得到正確的答案。在數組中。但是,當引入大號示例時,它不能顯示最小總和:396285104 573261094 759641832 819230764 364801279 最大值工作正常但最小值即將到來 2153578241 而不是 2093989309
查看完整描述

2 回答

?
白衣染霜花

TA貢獻1796條經驗 獲得超10個贊

您當前代碼的問題不是大數字,而是索引 3。您永遠不會從計算中排除該索引,因此如果它是列表中最大的或最小的,您將得到錯誤的結果。


你從不跳過索引 3 的原因是你的外循環運行是 on range(0, 4),內循環也是。這意味著您需要從索引 0 到 3 開始的四個項目。但是您永遠不會從索引 4 開始,在這種情況下會跳過索引 3。


因此,您可以通過簡單的修復來修復您的代碼:


 for i in range(0, 5):            # replace 4 with 5 here!

    sum1=0

    for j in range(0,4):

        ...

我注意到有很多更有效的方法可以解決這個問題。例如,您可以計算列表中所有五個值的總和(small盡管使用內置sum函數會更容易,但您已經在執行此操作),然后找到單個最大值和最小值(可能使用minandmax函數) . 然后,您可以通過從所有項目的總和中減去最大的單個項目來找到四個項目的最小總和,而通過減去最小的單個項目來找到四個項目的最大總和。


def miniMaxSum(arr):

    arr_sum = sum(arr)

    min_val = min(arr)

    max_val = max(arr)

    print("Minimum:", arr_sum - max_val, "Maximum:", arr_sum - min_val)


查看完整回答
反對 回復 2022-06-22
?
LEATH

TA貢獻1936條經驗 獲得超7個贊

通常我會使用


print("Minimum:", sum(sorted(arr)[:4]), "Maximum:", sum(sorted(arr)[1:]))

我試著理解你的代碼,但只有我可以把它改成這樣:


def miniMaxSum(arr):

    small = arr[0] + arr[1] + arr[2] + arr[3] + arr[4]

    large = 0

    for i in range(5):

        temp = 0

        for j in range(5):

            if i != j:

                temp += arr[j]

        if temp > large:

            large = temp

        if temp < small:

            small = temp

    print("Minimum:", small, "Maximum:", large)


#arr = list(map(int, input().rstrip().split()))

miniMaxSum(arr)

使用i != j我總是跳過一個數字,所以它總是只對 4 個數字求和。


查看完整回答
反對 回復 2022-06-22
  • 2 回答
  • 0 關注
  • 182 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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