如何在 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 用作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.")

最后,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 中对数字的数字进行排序并获取另一个数字?的主要内容,如果未能解决你的问题,请参考以下文章

如何在iOS中对包含数字和名称的字符串数组进行排序

如果您可以在 7 次比较中对 5 个数字进行排序,那么如何在 10 次比较中对 6 个数字进行排序?

如何在javascript中对字母数字数组进行排序[重复]

如何在javascript中对字符串进行数字排序

在 MySQL 中对 varchar 字段进行数字排序

在Delphi中对Tstringlist中的数字数据进行数字排序