牛叔叔 的笔记

好好学习

2021-07-18 17:31

数字黑洞

牛叔叔

Python

(1095)

(0)

收藏

什么是数字黑洞?

给定一个各位数字不完全相同的四位正整数,如果先把四个数字按递减排序,再按递增排序,然后两者相减(大的减去小的),将会得到一个新的数字,对新的数字重复此步骤,很快(不超过7次)就会停在数字黑洞“6147”。


我们可以编程来验证数据黑洞,如果输入的是3位数,我们补一个零。

#数字黑洞 wanmait.com
num0 = input("请输入一个四位数(各个位数字不同):")
if len(str(num0))<4:
    #补零
    num0 = ('0'+str(num0) )[-4:]
while True:
    num0 = list(str(num0))
    #对这个四位数进行排序
    # 获得由大到小的排序结果
    num0.sort()
    num1 = ''.join(num0)
    #逆序获得由小到大的排序结果
    num0.reverse()
    num2 = ''.join(num0)
    #计算差
    num0 = int(num2)-int(num1)
    if len(str(num0))<4:
        #补零
        num0 = ('0'+str(num0))[-4:]
    print(f"{num2} - {num1} = {num0}")
    if int(num0) == 6174 or int(num0) == 0:
        break


我们运行测试:

请输入一个四位数(各个位数字不同):5643
6543 - 3456 = 3087
8730 - 0378 = 8352
8532 - 2358 = 6174


再测试一次:

请输入一个四位数(各个位数字不同):1234
4321 - 1234 = 3087
8730 - 0378 = 8352
8532 - 2358 = 6174


再来一次:

请输入一个四位数(各个位数字不同):9876
9876 - 6789 = 3087
8730 - 0378 = 8352
8532 - 2358 = 6174


怎么样?

你能不能想办法编程测试5位数是否也有数字黑洞?是哪个数字?


0条评论

点击登录参与评论