python 问题 看内容 求解

如何用python实现输入一个数,返回一个由该数字组成的比输入数大的数,返回的数正好是能组成比原数大的数中最小的数

a = int(input('type a number:'))
b = sorted([n for n in str(a)])
c = []
for i in range(int(''.join(b)),int(''.join(sorted(b,reverse=True)))+1):
    t = sorted([n for n in str(i)])
    if t==b and i>a:
        c.append(i)
if len(c)==0:
    print('没有符合条件的数字')
else:
    print('最小数是:'+str(min(c)))

一个笨办法实现的,获取到数字后,将数字切片成列表,然后循环切片组成的最小数到最大数+1,当循环的数字切片与输入的数字切片相等时,即为相同数字组成的,当数字大于输入的数字,进行记录,如果没有,则输出没有,否则输出记录中的最小值

#!/usr/bin/python
# -*- coding: UTF-8 -*-
"""
@author: YangPC
@time:2021/06/17
@QQ:327844761
@微信公众号:ewbang
"""

import itertools

'''
实现输入一个数,返回一个由该数字组成的比输入数大的数,返回的数正好是能组成比原数大的数中最小的数
'''


def fun():
    a = int(input('请输入n:'))
    b = sorted([n for n in str(a)])
    result = [int(''.join(map(str, x))) for x in itertools.permutations(b, len(str(a)))]
    print(result)
    if a == result[len(result) - 1]:
        print("没有匹配的值")
    else:
        r = result[result.index(a) + 1]
        print("输出结果:{}".format(r))


if __name__ == '__main__':
    fun()

程序输出结果:

不太明白,最好能举几个例子

您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632