Найти число с максимальной суммой цифр

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)
→ Ссылка