python 程序打印可能的最小数字,例如:输入 23780 输出:20378

时间:2021-08-01 17:53:40

标签: python

def large(n):
    s=0
    for i in range(1,10):
        copy=n
        while copy>0:
            r=copy%10
            if (r==i):
                s=(s*10)+r
            if (r==0) and (s>0) and (s<10):
                s=(s*10)+r
            copy=copy//10
    print(s)
    

n=int(input("enter: "))
large(n)

我写了这个,但如果任何数字重复,它就不起作用

1 个答案:

答案 0 :(得分:0)

首先我们对数字进行排序,然后我们想用零交换第一个不是0的数字,我们确定排序后如果有任何零,那么在排序字符串中的第一个数字将是 0 并且不是 0 的第一个数字是数字中的所有 0 之后。如果没有 0,则代码会将位置 0 处的元素与其自身“交换”,因此它也可以工作。

def large(n):
    sn = sorted(str(n))
    zeros = sn.count('0')
    ln = list(sn)
    ln[zeros], ln[0] = ln[0], ln[zeros]
    return ''.join(ln)


n = int(input("enter: "))
print(large(n))