Найти число с максимальной суммой цифр
def func(arr):
sum = 0
result = []
for i in range(len(arr)):
sum = 0
arr[i] = list(str(arr[i]))
for j in range(len(arr[i])):
sum += int(arr[i][j])
result.append(sum)
x = result.index(sum)
print(x)
array = [120, 125, 365, 450]
print(func(array))
Что я делаю: сначала нахожу сумму цифр числа, чтобы найти максимальное. По индексу максимального числа из полученных сумм хочу найти максимальное из array.
До append все хорошо, но с индексом и нахождением числа проблема...
Ответы (2 шт):
Автор решения: entithat
→ Ссылка
Находим максимальный элемент массива array по ключу:
- Из числа
365(к примеру) делаем список['3', '6', '5']. - Находим сумму элементов списка
sum(...), при этом переводя их вmap(int, ...).
array = [120, 125, 365, 450]
print(max(array, key=lambda x: sum(map(int, str(x)))))
Автор решения: Jack_oS
→ Ссылка
В дополнение к ответу от entithat.
Больше текста, но без зубодробительности однострочников пайтона ;)
# функция для определения суммы чисел
def sum_nums(num):
result = 0 # текущая сумма - 0
for ch in str(num): # для каждого элемента в числе, переведенном в строку:
result += int(ch) # добавить инт элемента к результату
return result
# основная ф-ция
def max_sum_num(arr):
max_num = arr[0] # первый в списке - текущий максимальный
max_sum = sum_nums(arr[0]) # то же для суммы
for el in arr[1:]: # для каждого элемента, начиная со второго:
el_sum = sum_nums(el) # вычислить сумму
if el_sum > max_sum: # если больше текущей:
max_num = el # обновить максимальное число
max_sum = el_sum # обновить максимальную сумму
return max_num
array = [120,125,365,450]
max_sum_num(array)