尝试取整数并将其作为降序整数从函数返回。
我首先是这样做的:
def Descending_Order(num):
n = str(num)
return(int(n[::-1]))
因为测试只有数字按降序排列;有点cheezy但嘿它工作..现在我想做一个任何数字的数字,并使其返回从最大到最小的数字。
正如你所看到的,我试图将int转换为字符串(n)并像我想的那样操纵它。
EG:
1201将返回2110
def Descending_Order(num):
n = str(num)
i = 0
swap = 0
while i < len(n):
if i+1>len(n):
break
elif n[i] < n[i+1]:
swap = n[i]
n[i]= n[i+1]
n[i+1]=swap
i+=1
else:
i+=1
return(n)
print(Descending_Order(1201))
答案 0 :(得分:1)
字符串是可迭代的,因此您可以将它们传递到sorted
,如下所示:
def largest_number(num):
num = str(num)
ordered = ''.join(sorted(num, reverse=True))
return int(ordered)
largest_number(87491)
>> 98741
sorted
会返回一个列表,因此sorted('87491', reverse=True)
将返回:
['9', '8', '7', '4', '1']
将列表传递到join
(链接到连接方法的解释)将返回:
'98741'
答案 1 :(得分:1)
正如其他答案所指出的,这是一个排序问题。您可以使用内置排序功能,但这可能需要(相对)长时间,如果您刚刚开始,编写自己的实现而不是依赖库魔术可能会很好。
因为我们只对0到9之间的整数进行排序,所以我们可以使用比python sorted
使用的timsort更快的排序算法。
我们所做的是计算每个数字的出现次数。然后我们构造一个数字,其数量与我们在原始数据中找到的数量相同,然后是8s ......直到0。
def Decending_Order(num):
arr = [0,0,0,0,0,0,0,0,0,0]
res = []
for i in str(num):
arr[int(i)] += 1
for i in range(0,9):
while arr[i] > 0:
res.append(str(i))
arr[i] -= 1
return res.reverse()
答案 2 :(得分:-1)
一个漂亮的单行(基本上与上面相同:变成一个字符串,反向排序,回到int):
def largest_num (num): return int (sorted (str (num), reverse = True))