不使用列表的数字黑洞
# -*- 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()
运行结果: