第6章-3.列表或元组的数字元素求和 (20分)

求列表中数字和,列表中嵌套层次不限2层

输入格式:

在一行中输入列表或元组

输出格式:

在一行中输出数字的和

输入样例:

在这里给出一组输入。例如:

[11,2,[3,7],(68,-1),"123",9]
 

输出样例:

在这里给出相应的输出。例如:

99
递归版本1
 1 # 列表或元组的数字元素求和-递归算法1
 2 # Author: cnRick
 3 # Time  : 2020-4-13
 4 def getSum(items):
 5     if (type(items) == int) or (type(items) == str):
 6         if type(items) == int:
 7             return items
 8         elif type(items) == str:
 9             return 0
10     else:
11         if (type(items) == tuple) or (type(items) == list):
12             result = 0
13             for i in range(len(items)):
14                 result += getSum(items[i])
15             return result
16         else:
17             return 0
18 
19 items = eval(input())
20 result = 0
21 for i in range(len(items)):
22     result = result + getSum(items[i])
23 print(result)

递归版本2

 1 # 列表或元组的数字元素求和-递归算法2
 2 # Author: cnRick
 3 # Time  : 2020-4-13
 4 def flatten(items):
 5     lst = []
 6     for x in items:
 7         if isinstance(x,(list,tuple)) and not isinstance(x,str):
 8             for element in flatten(x):
 9                 lst.append(element)
10         else:
11             if type(x)!=str:
12                 lst.append(x)
13     return lst
14 items = eval(input())
15 I = [num for num in flatten(items)]
16 print(sum(I))

 

 
posted @ 2020-04-13 22:20  cnRicky  阅读(1656)  评论(0编辑  收藏  举报