如何对数字的数字进行排序并在Python中获取另一个数字?

时间:2014-04-21 14:04:49

标签: python int typeerror iterable sorted

初学者在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 个答案:

答案 0 :(得分:4)

首先,将sorted置于可迭代的周围并不会改变迭代本身。您需要执行a = sorted(a)

之类的操作

现在,就您的示例而言,您尝试使用number作为intstr。您需要在必要时在strint之间进行转换:

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.")

最后,aint,因此您无法在最后一个打印语句中执行int+str。要么像我一样使用逗号,要么print(str(a)+" iterations")

答案 1 :(得分:1)

为此,你可以简单地做:

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

现在你的排序将起作用

感谢@SimonT的建议。