Работа с массивом Python

У меня есть массив

n = [ 35, 40, 101, 59, 63 ]

Необходимо просуммировать последовательно каждый элемент, и если сумма элементов > 100 , то из общей суммы массива вычитаем max значение из оставшихся элементов.

  1. 35+40+101=176
    176 >100
  2. 63 > 59
  3. 176+59 = 235

Как создать такой цикл?

Решение отредактировал:

array = [35, 40, 101, 59, 63]  # Ваш список.
numeral = 0
i = 0  # Переменная, равная числу итерации.
while numeral < 100:  # Цикл.
    numeral = numeral + array[i]  # Сложение чисел списка.
    i += 1
else:
    numeral = 0
    maximum_number = max(array[i:])  # Получаем максимальное число из оставшегося списка.
    array.remove(maximum_number)  # Удаляем из списка данное число.
    for numbers in array:  # Складываем оставшиеся числа.
        numeral = numeral + numbers
print (numeral)

Ответы (2 шт):

Автор решения: 6 crimes

Один из способов решения Вашей задачи:

array = [35, 40, 101, 59, 63]  # Ваш список.
numeral = 0
i = 0  # Переменная, равная числу итерации.
while numeral < 100:  # Цикл.
    numeral = numeral + array[i]  # Сложение чисел списка.
    i += 1
else:
    numeral = 0
    maximum_number = max(array[i:])  # Получаем максимальное число из оставшегося списка.
    array.remove(maximum_number)  # Удаляем из списка данное число.
    for numbers in array:  # Складываем оставшиеся числа.
        numeral = numeral + numbers
    required_number = numeral - maximum_number  # Данное число - ответ на Вашу задачу.
→ Ссылка
Автор решения: Vasyl Kolomiets

В одобренном решении есть пару неточностей, связанных с одним вариантом входных данных. А именно - что будет, если сумма чисел массива меньше 100? Ну например, входной массив - это 99 единиц? Ответ - ошибка индекса в операторе numeral = numeral + array[i].
Вторая неточность. Допустим, наш исходный массив ровно 100 единиц. Тогда ошибка будет в операторе maximum_number = max(array[i:]) и вы получите сообщение: max() arg is an empty sequence, поскольку array[100:] в такум случае даст пустой список [].
С учетом этих замечаний код мог бы выглядеть так:

arr = [35, 40, 101, 59, 63]  # Ваш список.

#arr = 101*[1]

sum_arr = 0
for i, num in enumerate(arr):
    sum_arr += num
    if sum_arr > 100:
        break

if i+1 == len(arr):
    if sum_arr > 100:
        print(f"Искомый результат = {sum_arr}")
    else:
        print(f"сумма ряда не больше 100 и равна {sum_arr}")
else:
    print(f"Искомый результат = {sum_arr - max(arr[i+1:]) + sum(arr[i+1:])}")
→ Ссылка