Python:四位数字黑洞

本文介绍了一个有趣的数学现象——数字黑洞,并通过编程实现了一种不使用列表的方法来演示这一过程。具体而言,从任意四位数出发,经过特定步骤反复迭代,最终会达到一个固定的数6174,即所谓的数字黑洞。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

不使用列表的数字黑洞

# -*- coding: utf-8 -*-
"""
ProjectName:数字黑洞
Daytime:2021-10-18
"""
def MaxMinNum(num):         # 求出最大最小值
    a = (num // 1000) % 10  # 千
    b = (num // 100) % 10   # 百
    c = (num // 10) % 10    # 十
    d = num % 10            # 个
    if a > b:
        a, b = b, a         # 比较并交换a,b的值
    if a > c:
        a, c = c, a
    if a > d:
        a, d = d, a
    if b > c:
        b, c = c, b
    if b > d:
        b, d = d, b
    if c > d:
        c, d = d, c
    max_n = d * 1000 + c * 100 + b * 10 + a     # 最大值
    min_n = a * 1000 + b * 100 + c * 10 + d     # 最小值
    return max_n, min_n                         # 推出最大最小值

def Test(num):                                  # 运算并输出
    flag = 0                                    # 步长
    export = MaxMinNum(num)                     # 调用MaxMinNum函数来获得最大最小值
    out = export[0] - export[1]                 # 做差
    flag += 1                                   # 步长加1
    print("%d-%d=%d" % (export[0], export[1], out))
    while out != 6174:                          # 循环上面的直到输出为黑洞数
        export = MaxMinNum(out)
        out = export[0] - export[1]
        flag += 1
        print("%d-%d=%d" % (export[0], export[1], out))
    print("步长:", flag)

def main():
    try:
        while True:
            n = int(input("输入四位整数(不能每位都相同):"))
            if 1000 <= n <= 9999 and n % 1111 != 0:  # 判断是否为4位数、不是1111这类数
                break
        Test(n)                                      
    except Exception as e:
        print("错误类型:", str(msg))

if __name__ == '__main__':
    main()

运行结果:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值