python黑洞数——超简单方法O

编写函数计算任意位数的黑洞数。黑洞数是指这样的整数:由这个数字每位上的数字组成的最大数减去每位数字组成的最小数仍然得到这个数自身。例如 3 位黑洞数是 495,因为 954-459=495,4 位数字是 6174,因为 7641-1467=6174。

思路:
输入位数来确定循环范围,L,R来实现。在for循环内,例如321吧,将其拆分映射为[ 1, 2, 3] 和 [ 3, 2, 1],然后组合成数123 和 321。将其相减,若是满足规则就输出。

这思路说的简略了些,这里面涉及了很多转换,不想画图给你看了,懒!!!
# -*- coding:utf-8 -*-
import math

def Black(num):
    B_num = []
    L = int(math.pow(10,num-1))
    R = int(math.pow(10,num))
    for i in range(L,R):
        list1 = list(map(str,str(i)))

        list1.sort()
        list_min = list1[:]
        # 去除首位为0的元素
        while list_min[0] == '0':
            del list_min[0]

        list1.sort(reverse=True)
        list_max = list1[:]
#        化为整数
        num_min= eval(''.join(list_min))
        num_max = eval(''.join(list_max))

        res = num_max - num_min
        if res == i:
            print(i)

num = eval(input("要计算几位的黑洞数?"))
Black(num)
  • 5
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值