Убывающее число Python

Мне нужно создать программу, которая будет принимать целое число (например, 4586) и возвращать число с цифрами в порядке убывания (например, 8654).

num = 4586

num1 = num #num1 is a string

descendingNumber = []

for i in num1:
 for j in i:
   if i < j:
     descendingNumber.append(i)
   else:
     descendingNumber.insert(1,i)

Что я делаю не так?

num1 это не строка. Я думаю, ты имеешь в виду num1 = str(num)
Barmar 16.05.2022 19:41

Когда вы запускаете эту программу, вы получаете сообщение об ошибке TypeError: 'int' object is not iterable at for i in num1:. О чем тебе это говорит? Может быть, ваши предположения неверны?

wjandrea 16.05.2022 19:42

Если бы num1 была строкой, for j in i: if i < j: не работала бы. Ты знаешь почему? Попробуйте поместить print(i, j) в самый внутренний цикл и посмотреть, каковы будут их фактические значения. В любом случае, сортировка списка является более сложной задачей.

wjandrea 16.05.2022 19:45

Кстати, добро пожаловать в Stack Overflow! Пожалуйста, возьмите тур и прочитайте Как спросить, в котором есть такие советы, как начать с собственного исследования, сформулировать конкретный вопрос и написать четкий заголовок.

wjandrea 16.05.2022 19:46
Анализ настроения постов в Twitter с помощью Python, Tweepy и Flair
Анализ настроения постов в Twitter с помощью Python, Tweepy и Flair
Анализ настроения текстовых сообщений может быть настолько сложным или простым, насколько вы его сделаете. Как и в любом ML-проекте, вы можете выбрать...
7 лайфхаков для начинающих Python-программистов
7 лайфхаков для начинающих Python-программистов
В этой статье мы расскажем о хитростях и советах по Python, которые должны быть известны разработчику Python.
Установка Apache Cassandra на Mac OS
Установка Apache Cassandra на Mac OS
Это краткое руководство по установке Apache Cassandra.
Сертификатная программа "Кванты Python": Бэктестер ансамблевых методов на основе ООП
Сертификатная программа "Кванты Python": Бэктестер ансамблевых методов на основе ООП
В одном из недавних постов я рассказал о том, как я использую навыки количественных исследований, которые я совершенствую в рамках программы TPQ...
Создание персонального файлового хранилища
Создание персонального файлового хранилища
Вы когда-нибудь хотели поделиться с кем-то файлом, но он содержал конфиденциальную информацию? Многие думают, что электронная почта безопасна, но это...
Создание приборной панели для анализа данных на GCP - часть I
Создание приборной панели для анализа данных на GCP - часть I
Недавно я столкнулся с интересной бизнес-задачей - визуализацией сбоев в цепочке поставок лекарств, которую могут просматривать врачи и...
1
4
37
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Один лайнер:

num = 4586
descendingNumber = int("".join(sorted(str(num), reverse=True)))
print(descendingNumber)
Ответ принят как подходящий

Этот процесс вставки выглядит не совсем правильно. Вы можете сделать это в одной строке, используя встроенные функции.

Сначала мы получаем отдельные цифры с помощью str(), а затем сортируем их с помощью sorted(). Это дает нам список цифр, поэтому мы используем ''.join(), чтобы превратить его обратно в строку. Наконец, мы возвращаем результат обратно в целое число, чтобы получить желаемый результат:

int(''.join(sorted(str(num), reverse=True)))

Это выводит:

8654

Другие вопросы по теме