Проблема в вашем текущем коде связана не с большими числами, а с индексом 3. Вы никогда не исключаете этот индекс из своих вычислений, поэтому, если он самый большой из самых маленьких в вашем списке, вы получите неправильные результаты.
Причина, по которой вы никогда не пропускаете индекс 3, заключается в том, что ваш внешний цикл работает на 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
было бы проще), а затем найти одно наибольшее и наименьшее значения (возможно, с использованием функций min
и max
). Затем вы можете найти наименьшую сумму из четырех предметов, вычитая самый большой отдельный элемент из суммы всех предметов, а наибольшую сумму из четырех, вычтя вместо этого самый маленький отдельный элемент.
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)