Python

Помогите пожалуйста составить программу на языке Python. заранее спасибо!

Напишите программу, которая сортирует массив по убыванию суммы цифр числа.
Используйте функцию, которая определяет сумму цифр числа.
Держи сортировку по сумме цифр с отдельной функцией, даже с двумя. Две по цене одной.
 def digititer(n):
while n != 0: yield n % 10; n //= 10

def digitsum(n): return sum(digititer(n))

arr = map(int, input("Введите элементы массива через пробел: ").split())
print(*sorted(arr, key = digitsum, reverse = True))
Пример:
 Введите элементы массива через пробел: 1012 873 2048 15
873 2048 15 1012
Sergiu Marian
Sergiu Marian
87 571
Лучший ответ
Gpt первые восемь строк очень даже хорошо сказал. А у меня возник вопрос в листах есть метод сорт. У него есть две скобочки. А если внутрь этих скобочек написать ту функцию которую вы написали, то что будет?
Vladimir Kolodiy
Vladimir Kolodiy
8 061
 print(*sorted(input().split(), key = lambda x: sum(map(int, x)), reverse = True)) 
 def digit_sum(n):  
return sum(int(digit) for digit in str(n))

def selection_sort_descending_by_digit_sum(arr):
n = len(arr)
for i in range(n):
max_idx = i
for j in range(i+1, n):
if digit_sum(arr[j]) > digit_sum(arr[max_idx]):
max_idx = j
arr[i], arr[max_idx] = arr[max_idx], arr[i]

arr = [123, 456, 789, 12, 34, 56, 78, 90]
selection_sort_descending_by_digit_sum(arr)
print(arr) # [789, 456, 123, 90, 78, 56, 34, 12]
Принимай работу :D
def sum_digits(n):
"""Функция для определения суммы цифр числа"""
s = 0
while n:
s += n % 10
n //= 10
return s

def sort_by_sum(arr):
"""Функция для сортировки массива по убыванию суммы цифр числа"""
n = len(arr)
for i in range(n):
for j in range(n-1-i):
if sum_digits(arr[j]) < sum_digits(arr[j+1]):
arr[j], arr[j+1] = arr[j+1], arr[j]
return arr

# Пример использования
arr = [123, 456, 789, 101112, 13141516]
print("Исходный массив: ", arr)
arr_sorted = sort_by_sum(arr)
print("Массив после сортировки по убыванию суммы цифр числа: ", arr_sorted)




В этом примере сначала определяется функция sum_digits, которая принимает целое число n и возвращает сумму его цифр. Затем определяется функция sort_by_sum, которая принимает массив чисел arr и сортирует его по убыванию суммы цифр каждого числа. Для сортировки используется алгоритм сортировки пузырьком.

Пример использования программы показывает, как можно вызвать функцию sort_by_sum и отсортировать исходный массив чисел. Результат сортировки выводится на экран.