Как найти наибольшую цифру в числе в python
Перейти к содержимому

Как найти наибольшую цифру в числе в python

  • автор:

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

Что я делаю: сначала нахожу сумму цифр числа, чтобы найти максимальное. По индексу максимального числа из полученных сумм хочу найти максимальное из 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 — единицы) можно описать так:

  1. Найти остаток от деления abc на 10, записать его в переменную d1 . Это будет цифра c.
  2. Избавиться от цифры c в числе abc, разделив его нацело на 10.
  3. Найти остаток от деления ab на 10, записать его в переменную d2 . Это будет цифра b.
  4. Избавиться от цифры b в числе ab, разделив его нацело на 10.
  5. Число a однозначное. Это еще одна цифра исходного числа.
  6. Сложить оставшееся число 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

Однако, если нам известно, что число состоит из трех разрядов (цифр), есть немного другой способ извлечения цифр из числа:

  1. Остаток от деления на 10 исходного числа дает последнюю цифру числа.
  2. Если найти остаток от деления на 100 исходного числа, то мы получи последние две цифры числа. Далее следует разделить полученное двухзначное число нацело на 10, и у нас окажется вторая цифра числа.
  3. Если исходное трехзначное число разделить нацело на 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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *