python3任意位數的磁力數求法

from collections import Counter
def split(n, numberlist):
    numberlist.clear()
    while(n > 0):
        mod = n % 10
        n = int( n / 10)
        numberlist.append(mod)
    return numberlist

def combine(list, k):
    temp = 0
    for i in range(k):
        temp1 = list[i] * pow(10, k - i -1)
        temp = temp + temp1
    return temp
def differ(n):
    if n < 10:
        return n * 10 - n #加入2位數的磁力數判斷,如果差值爲個位數的情況
    else:
        split(n, list)
        list.sort()
        listmin = list.copy()
        list.reverse()
        max = combine(list, len)
        min = combine(listmin, len)
        return max - min
n = eval(input("input a number: "))
len = len(str(n))
list = []
L = []
lst = []
 
n = differ(n)
counter = Counter()
 
while 10 not in counter.values():
   
    L.append(n)
    n = differ(n)
    counter = Counter(L)
d = dict(counter)
print(d)
for key in d:
    if d[key] > 8:
        lst.append(key)
print(lst)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章