枚举验证6174
描述:任意各位数字不同的4位数,使用4个数能组成的最大数减去最小数,对得到的差进行重复操作,最多不过7次会得到6174
1.combinations函数()简介
2.代码实现
(1)调用模块、函数
from string import digits
from itertools import combinations
(2)遍历所有各位数字不同的四位数
for item in combinations(digits, 4):
(3)对每一个四位数进行判断,先计数
time = 0
(4)循环,利用排序组成最大数(reverse=True降序,reverse=False升序)
while True:
big = int(''.join(sorted(item, reverse=True)))
(5)同理利用排序组成最小数
little = int(''.join(sorted(item)))
(6)做差并判断
difference = big - little
time += 1
if difference == 6174: #判断
if time > 7:
print(item, '第{}次出现6174'.format(time))
break
else:
item = str(difference)
#继续循环
即
from string import digits
from itertools import combinations
for item in combinations(digits, 4): #item: tuple[str]
#(2)遍历所有各位数字不同的四位数
time = 0 #先计数
while True:
big = int(''.join(sorted(item, reverse=True)))
#利用排序组成最大数(reverse=True降序,reverse=False升序)
little = int(''.join(sorted(item)))
#利用排序组成最小数
difference = big - little
time += 1
if difference == 6174: #判断
if time > 7:
print(item, '第{}次出现6174'.format(time))
break
else:
item = str(difference)
#继续循环