Найти число с максимальной суммой цифр
Что я делаю: сначала нахожу сумму цифр числа, чтобы найти максимальное. По индексу максимального числа из полученных сумм хочу найти максимальное из array . До append все хорошо, но с индексом и нахождением числа проблема.
Отслеживать
12.5k 7 7 золотых знаков 19 19 серебряных знаков 48 48 бронзовых знаков
задан 22 апр 2021 в 10:25
Дарья Лазарева Дарья Лазарева
69 1 1 серебряный знак 8 8 бронзовых знаков
array = [120,125,365,450]; print(max(array)) (max() — встроенная функция пайтона)
22 апр 2021 в 10:28
Если бы так просто было))) Прочитайте мой комментарий.
22 апр 2021 в 10:32
или нужно вернуть не 450 (максимальное), а 365, у которого максимальная сумма цифр? ps по описанию как раз и не скажешь, что вы на самом деле хотите получить
22 апр 2021 в 10:32
Да 365 нужно вернуть
22 апр 2021 в 10:33
2 ответа 2
Сортировка: Сброс на вариант по умолчанию
Находим максимальный элемент массива array по ключу:
- Из числа 365 (к примеру) делаем список [‘3’, ‘6’, ‘5’] .
- Находим сумму элементов списка sum(. ) , при этом переводя их в map(int, . ) .
array = [120, 125, 365, 450] print(max(array, key=lambda x: sum(map(int, str(x)))))
Отслеживать
ответ дан 22 апр 2021 в 10:36
13.1k 2 2 золотых знака 21 21 серебряный знак 37 37 бронзовых знаков
TypeError: ‘int’ object is not callable
22 апр 2021 в 10:38
@Jack_oS, еще раз проверьте 🙂
22 апр 2021 в 10:38
да, все ок, это что-то с pycharm было и его django console.
22 апр 2021 в 16:20
В дополнение к ответу от 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)
Ошибка сервера в приложении ‘/’.
Описание: На сервере возникла ошибка приложения. Текущая пользовательская настройка ошибок для этого приложения не позволяет удаленно просматривать сведения об ошибке данного приложения (из соображений безопасности). Однако, сведения можно просматривать в браузерах, запущенных на локальном сервере.
Сведения: Для разрешения просмотра сведений данного сообщения об ошибке на локальном сервере создайте тег в файле конфигурации «web.config», который находится в корневом каталоге текущего веб-приложения. В теге следует задать атрибут «mode» со значением «Off».
Примечания: Отображаемую в данный момент страницу ошибок можно заменить на пользовательскую страницу ошибок, изменив атрибут «defaultRedirect» тега конфигурации приложения таким образом, чтобы он содержал URL-адрес пользовательской страницы ошибок.
Найти наибольшую и наименьшую цифры в записи данного натурального
числа (python)
Мы проходим циклом каждую цифру в числе: оно в переменной numberStr записывается как строка, а строки представляют собой список (list) из «букв» (в данном случае, цифр).
digits.append(int(digit)) записывает в подготовленный список каждую цифру как отдельное число.
Последние две строки: min() и max() — это встроенные функции Python, которые выбирают из списка наименьший и наибольший элемент.
Сумма цифр трехзначного числа
Как извлечь отдельные цифры из числа? Если число разделить нацело на десять, в остатке будет последняя цифра этого числа. Например, если 349 разделить нацело на 10, то получится частное 34 и остаток 9. Если потом 34 разделить также, получится частное 3 и остаток 4; далее при делении 3 на 10 получим частное 0 и остаток 3.
В языках программирования почти всегда есть две операции:
1) нахождение целого при делении нацело,
2) нахождение остатка при делении нацело.
В языке программирования Python первая операция обозначается // (двумя знаками деления), а вторая — % (знаком процента). Например:
>>> 34 // 10 3 >>> 34 % 10 4
Примечание. Операции деления нацело и нахождения остатка с точки зрения арифметики применимы только к целым числам. Но в Python их можно использовать и по отношению к дробным числам:
>>> 34.5 % 10 4.5 >>> 34.5 // 10 3.0 >>> 34.5 // 12.9 2.0
Алгоритм нахождения суммы цифр трехзначного числа abc (где a — сотни, b — десятки и c — единицы) можно описать так:
- Найти остаток от деления abc на 10, записать его в переменную d1 . Это будет цифра c.
- Избавиться от цифры c в числе abc, разделив его нацело на 10.
- Найти остаток от деления ab на 10, записать его в переменную d2 . Это будет цифра b.
- Избавиться от цифры b в числе ab, разделив его нацело на 10.
- Число a однозначное. Это еще одна цифра исходного числа.
- Сложить оставшееся число a со значениями переменных d1 и d2 .
n = input("Введите трехзначное число: ") n = int(n) d1 = n % 10 n = n // 10 d2 = n % 10 n = n // 10 print("Сумма цифр числа:", n + d2 + d3)
Пример выполнения программы:
Введите трехзначное число: 742 Сумма цифр числа: 13
Однако, если нам известно, что число состоит из трех разрядов (цифр), есть немного другой способ извлечения цифр из числа:
- Остаток от деления на 10 исходного числа дает последнюю цифру числа.
- Если найти остаток от деления на 100 исходного числа, то мы получи последние две цифры числа. Далее следует разделить полученное двухзначное число нацело на 10, и у нас окажется вторая цифра числа.
- Если исходное трехзначное число разделить нацело на 100, то получится первая цифра числа.
n = input("Введите трехзначное число: ") n = int(n) d1 = n % 10 d2 = n % 100 // 10 d3 = n // 100 print("Сумма цифр числа:", d1 + d2 + d3)
В Python данную задачу можно решить без использования арифметических действий, а путем извлечения из исходной строки отдельных символов с последующим их преобразованием к целому.
n = input("Введите трехзначное число: ") # Извлекается первый[0] символ строки, # преобразуется к целому. # Аналогично второй[1] и третий[2]. a = int(n[0]) b = int(n[1]) c = int(n[2]) print("Сумма цифр числа:", a + b + c)
Задача может быть усложнена тем, что число вводится не пользователем с клавиатуры, а должно быть сгенерировано случайно. Причем обязательно трехзначное число.
В этом случае надо воспользоваться функциями randint() , randrange() или random() из модуля random . Первым двум функциям передаются диапазоны: randint(100, 999) , randrange(100, 1000) . Получить трехзначное число, используя random() немного сложнее:
# Функция random генерирует # случайное дробное число от 0 до 1 from random import random # При умножении на 900 получается случайное # число от 0 до 899.(9). # Если прибавить 100, то получится # от 100 до 999.(9). n = random() * 900 + 100 # Отбрасывается дробная часть, # число выводится на экран n = int(n) print(n) # Извлекается старший разряд числа # путем деления нацело на 100 a = n // 100 # Деление нацело на 10 удаляет # последнюю цифру числа. # Затем нахождение остатка при # делении на 10 извлекает последнюю цифру, # которая в исходном числе была средней. b = (n // 10) % 10 # Младший разряд числа находится # как остаток при делении нацело на 10. c = n % 10 print(a+b+c)
X Скрыть Наверх
Решение задач на Python