马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
关于以下这道课后作业,老师是用判断出整型和浮点型的方法相加得到结果的
视频中我们说 sum() 这个BIF有个缺陷,就是如果参数里有字符串类型的话就会报错,请写出一个新的实现过程,自动“无视”参数里的字符串并返回正确的计算结果def sum(x):
result = 0
for each in x:
if (type(each) == int) or (type(each) == float):
result += each
else:
continue
return result
print(sum([1, 2.1, 2.3, 'a', '1', True]))
那我想问的是,能不能用 for each 判断出字符串类型,然后用.pop(each)把字符串减掉,这样遍历一遍后就剩整型和浮点型了,再用sum()函数。当然,这种思路是针对题目中列表只有数字和字符串,如果有多种类型还是上面的思路靠谱。a = [1, 2, 3, "hehe", 5, 6, "xixi"]
for each in a:
if (each==XXXXX): #这个不懂写。
a.pop(each)
print(sum(a))
print(b)
可以 不过你其实改进下,通过判断是不是数字不就行了,type(xx) == int or type(xx) == float 即可容纳其他的类型咯:
a = [1, 2, 3, "hehe", 5, 6, "xixi"]
for each in a[:]:
if type(each) == int or type(each) == float:
continue
a.remove(each)
print(sum(a))
这边要注意一点 循环的要循环切片后的值,不能直接把原列表移除,这样会导致你 for 循环过程遗漏判断里面的元素
因为你移除时候列表会变短,而 for 循环还会继续往下遍历,导致遗漏判断
而且你这里 pop 用法错了 ,pop函数里面填的是位置参数哈,你应该用remove 填 each 才算正确的
|