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

 

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM