Как отсортировать цифры числа и получить еще один номер в 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 за предложение.