8-3 【Python0004】验证6174猜想
分数 10
作者 doublebest
单位 石家庄铁道大学

【题目描述】1955年,卡普耶卡(D.R.Kaprekar)对4位数字进行了研究,发现一个规律:对任意各位数字不相同的4位数,使用各位数字能组成的最大数减去能组成的最小数,对得到的差重复这个操作,最终会得到6174这个数字,并且这个操作最多不会超过7次。请编写程序验证这个猜想。
【练习要求】请给出源代码程序和运行测试结果,源代码程序要求添加必要的注释。
【输入格式】在一行中输入一个任意各位数字不相同的4位数。
【输出格式】验证6174猜想,输出过程中计算得到的各数,数据间以空格为间隔。
【输入样例】2694
【输出样例】2694 7173 6354 3087 8352 6174

 

def kaprekar_6174(number):

 

count = 0

 

while number != 6174 and count < 7:

 

digits = \[int(d) for d in str(number)\]

 

digits.sort()

 

ascending = int(''.join(map(str, digits)))

 

descending = int(''.join(map(str, digits\[::-1\])))

 

number = descending - ascending

 

count += 1

 

return count

 

\# 获取用户输入

 

number = int(input("请输入一个各位数字不相同的4位数:"))

 

\# 调用函数验证猜想

 

steps = kaprekar_6174(number)

 

\# 输出结果

 

if steps == 7:

 

print("验证通过,达到了最大步数7次。")

 

else:

 

print("验证未通过,达到的步数为:", steps)

 代码量 80
时间 小时