我正在尝试编写一个函数,该函数返回由输入整数形式的数字组成的最大数字。 所以如果输入= 123584 输出应为= 854321
我的代码是 -
def maxNumber(inputNumber):
x = len(str(inputNumber))
max_number = []
result= []
while(x>0):
max_number.append(inputNumber%10)
inputNumber = inputNumber/10
x -= 1
while(x<(len(str(max_number)))):
result.append(max(max_number))
x += 1
return result
print maxNumber(1238675)
并且当然输出不是我想要的。请帮忙。我渴望学习所有可行的方法。
答案 0 :(得分:7)
最大数字是按降序排序数字形成的。可以使用rverse=True
参数sorted()
来获取此信息:
def max_digit_permutation(n):
return int("".join(sorted(str(n), reverse=True)))
答案 1 :(得分:7)
def maxNumber(inputNumber):
return int(''.join(sorted(str(inputNumber), reverse=True)))
答案 2 :(得分:4)
这比目前给出的大多数答案更可靠; - )
def max_number(n):
s = str(n)
digits = sorted(s, reverse=n>0)
return int(''.join(digits))
print max_number(231)
print max_number(-231)
print max_number(+231)
好点 - 我错过了单独使用数字的选择 - 这是为了完整性。 :)
from math import *
def max_number(n):
digit_count = int(log(abs(n+1),10)) + 1
digits = sorted([(n / 10 ** (x - 1) % 10) for x in range(digit_count,0,-1) ], reverse=True)
return reduce(lambda x, y:10*x + y, digits)
print max_number(1000)
print max_number(999)
print max_number(2345128)
print max_number(231)
答案 3 :(得分:2)
排序数字字符串reverse
,join
并转换为int
>>> x=123584
>>> int(''.join(sorted(str(x))[::-1]))
854321
答案 4 :(得分:1)
您可以将该数字视为单个数字列表,然后按降序对列表进行排序。
这样的事情:
num = str(123584)
int(''.join(sorted(num, reverse=True)))