给定一个正整数,实现一个方法求出离该整数最近的大于自身的 换位数 <把一个整数各个数位进行全排列>

"""
给定一个正整数,实现一个方法求出离该整数最近的大于自身的 换位数 -> 把一个整数各个数位进行全排列
"""

# 使用 permutations() 方法实现
import itertools


def full_arrangement(num):
  my_str = ''
  my_list = []
  permutation = list(itertools.permutations(str(num), len(str(num))))
  for p in permutation:
    for i in range(len(p)):
      my_str += p[i]
      if len(my_str) == len(str(num)):
        my_num = int(my_str)
        if my_num > num:
          my_list.append(my_num)
        my_str = ''
  return my_list


if __name__ == '__main__':
num = int(input('输入一个正整数:'))
my_list = full_arrangement(num)
# 离该整数最近的大于自身的 换位数
try:
  digits = min(my_list)
  print(digits)
except ValueError as e:
  print('该正整数没有比自身大的换位数')

posted @ 2018-05-21 17:39  backlightズ  阅读(213)  评论(0编辑  收藏  举报