Как отсортировать цифры числа и получить еще один номер в Python?

Новичок в Python и пытающийся закодировать эту программу:

a = 0
number = int(input("Choose a four digit number: "))

while number != 6174:                                    #Kaprekar's constant 
   sorted(number) 
   sorted(number, reverse=True)

   large = "".join(sorted(number, reverse=True))
   small = "".join(sorted(number))
   number = (int(large) - int(small))
   a += 1
print(a + "iterations.")

Я получаю следующую ошибку:

sorted(number)     
TypeError: 'int' object is not iterable

Так как я могу отсортировать цифры number и получить еще один номер?

2 ответа

Решение

Во-первых, положить sorted вокруг итерируемого не меняет самого итерируемого. Вам нужно сделать что-то вроде a = sorted(a),

Теперь, что касается вашего примера, вы пытаетесь работать с number как оба int и str, Вам нужно конвертировать между str а также int при необходимости здесь:

a=0
number = input("Choose a four digit number: ")

while number != "6174":
    large = "".join(sorted(number, reverse=True))
    small = "".join(sorted(number))
    number = str(int(large) - int(small))
    a+=1
print(a, "iterations.")

В заключение, a является intтак что вы не можете сделать int+str в последнем утверждении печати. Либо поставь запятую как у меня, либо делай print(str(a)+" iterations"),

Для этого вы можете просто сделать:

number = input("Choose a four digit number: ")

Теперь ваш отсортированный будет работать

Спасибо @SimonT за предложение.

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