第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))