如何在Python中对数字的各位进行排序并得到另一个数字?

2 投票
2 回答
2443 浏览
提问于 2025-04-18 03:36

我刚开始学习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") 来把整数转换成字符串再进行拼接。

撰写回答