2017-09-16 102 views
0

程序问题:写一个python代码来检查总和等效数字?功能应用程序

如果两个数字具有相同的位数并且它们的位数的总和相等,则称它们是总和等效的。

我的代码

n=int(input()) 
l={} 
g=[] 
for i in range(n): 
    t=0 
    x=int(input()) 
    q=str(x) 
    for f in range(len(q)): 
     t=t+int(q[f]) 
    l[x]=t 
w=list((l.keys())) 
p=list(str(i) for i in w) 
for k in range(1,len(p)): 
    if len(p[0])==len(p[k]): 
     if l[w[0]]==l[w[k]]: 
      g.append(str(w[k])) 
     else: 
      continue 
print(p[0])   
if len(g)>0: 
    for num in range(len(g)): 
     print(g[num]) 
else: 
    print('none are sum equivalent') 

我的问题:任何人都可以修改使用功能的代码或建议使用功能的新的代码?

回答

0

这可以是使用函数的一个例子;我做了一些重新因素:

def find_sum_equivalent_numbers(n): 
    l = dict() 
    g = list() 
    for i in range(n): 
     t = 0 
     x = int(input()) 
     q = str(x) 
     for f in range(len(q)): 
      t += int(q[f]) 
     l[x] = t 
    w = list((l.keys())) 
    p = list(str(i) for i in w) 
    for k in range(1, len(p)): 
     if len(p[0]) == len(p[k]): 
      if l[w[0]] == l[w[k]]: 
       g.append(str(w[k])) 
      else: 
       continue 
    return g 


if __name__ == "__main__": 
    number = int(input()) 
    sq_list = find_sum_equivalent_numbers(n=number) 
    print('\n'.join([str(sq_list[num]) for num in sq_list]) if len(sq_list) 
      else 'none are sum equivalent')