对答案的代码想到了一个疑问,就是如果答案中的def函数x中包含子列表,而且子列表中包含整型元素1怎么办。自己通过修改代码、加注释和添加if 、print的方法解答了这个疑问。
结论是:即使答案代码中x含有子列表,而且子列表中包含整型元素,那么也这个整型元素也不会被用来计算求和。
分析的代码如下:list1 = [1,2,3,4,'a','b','c','1',True,[1,'1']]
print('测试的列表为',list1)
def sum(x):
result = 0 #求和初始值
time = 0 #统计for循环进行的次数,来确认for循环是否历遍子列表的元素
for each in x: #通过for循环历遍列表中的所有元素
time += 1
if (type(each) == int) or (type(each) == float): #如果元素的数据类型为整型或者浮点型
print('大列表中可以用来求和的元素有:', each) #每次if条件成立,打印出符合条件的元素
result += each #求和
if time == 10: #目的是看循环到子列表时的具体信息,即第10次循环时
print('当前for循环中的each为:', each) #打印出第10次循环时, each是什么
print('此时each的类型为:', type(each)) #打印出第10次循环时, each的类型是什么
print('for循环进行的总次数为:', time) #通过次数来确定each是否历遍了子列表的两个元素,结果为否。从上两行代码中也能分辨出。
return result
print(sum([1,2,3,4,'a','b','c','1',True,[1,'1']]))
IDLE中运行的结果为:测试的列表为 [1, 2, 3, 4, 'a', 'b', 'c', '1', True, [1, '1']]
大列表中可以用来求和的元素有: 1
大列表中可以用来求和的元素有: 2
大列表中可以用来求和的元素有: 3
大列表中可以用来求和的元素有: 4
当前for循环中的each为: [1, '1']
此时each的类型为: <class 'list'>
for循环进行的总次数为: 10
10
|