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)

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 個數字求和。
添加回答
舉報