如何在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 个回答
1
为此,你可以简单地这样做:
number = input("Choose a four digit number: ")
现在你的排序功能就可以正常工作了。
感谢@SimonT的建议。
4
首先,把 sorted
放在一个可迭代对象(比如列表)周围,并不会改变这个对象本身。你需要像这样做:a = sorted(a)
,这样才能把排序后的结果赋值给 a
。
接下来,关于你的例子,你在尝试把 number
当作整数(int
)和字符串(str
)来使用。你需要在必要的时候在这两者之间进行转换:
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
),所以在最后的打印语句中你不能直接把整数和字符串相加。你可以像我那样用逗号,或者使用 print(str(a)+" iterations")
来把整数转换成字符串再进行拼接。