如何在 Python 中对数字的数字进行排序并获取另一个数字?
Posted
技术标签:
【中文标题】如何在 Python 中对数字的数字进行排序并获取另一个数字?【英文标题】:How to sort the digits of a number and get another number in Python? 【发布时间】:2014-06-05 14:44:11 【问题描述】: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
的数字进行排序并得到另一个数字呢?
【问题讨论】:
对单个数字进行排序的目的是什么,或者您是否要对它的数字进行排序? @CristianCiupitu:对数字进行排序? 是的,我想将数字重新排列为最大数字和最小数字。 @user3556477 在你的系统上试试这个:reduce(lambda i, j: 10 * int(i) + int(j), sorted(str(number), reverse=True))
【参考方案1】:
首先,将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")
。
【讨论】:
【参考方案2】:为此,您可以这样做:
number = input("Choose a four digit number: ")
现在您的排序将起作用
感谢@SimonT 的建议。
【讨论】:
list()
是多余的。
你可以通过number = input("Choose a four digit number: ")
得到同样的结果。以上是关于如何在 Python 中对数字的数字进行排序并获取另一个数字?的主要内容,如果未能解决你的问题,请参考以下文章