Работа с массивом Python
У меня есть массив
n = [ 35, 40, 101, 59, 63 ]
Необходимо просуммировать последовательно каждый элемент, и если сумма элементов > 100 , то из общей суммы массива вычитаем max значение из оставшихся элементов.
- 35+40+101=176
176 >100 - 63 > 59
- 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 шт):
Один из способов решения Вашей задачи:
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 # Данное число - ответ на Вашу задачу.
В одобренном решении есть пару неточностей, связанных с одним вариантом входных данных. А именно - что будет, если сумма чисел массива меньше 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:])}")