初学者在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
的数字进行排序并得到另一个数字?
答案 0 :(得分:4)
首先,将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")
。
答案 1 :(得分:1)
为此,你可以简单地做:
number = input("Choose a four digit number: ")
现在你的排序将起作用
感谢@SimonT的建议。