|

楼主 |
发表于 2016-12-6 22:48:24
|
显示全部楼层
这题我自己调试了一下,找到了原因所在:
- list1=input('请输入一个序列:')
- #如果输入[1,23,4]
- list(list1)
- #这步的话输出['[', '1', ',', '2', '3', ',', '4', ']'],这显然是错误的,python把所有的输入都当做是字符串,显然这不是我想要的结果,但是我用list方法去转换也是错误的方式。
- for each in list1:
- if each.isdigit!=0:
- #这步我的isdigit必须是字符串的方法,而each可能是整数,需要将其强制转化为字符串,且这里isdigit后面要加括号,不加的话有时候出来的结果不一样。
- 还有,我让if条件判断去和0比较是错误的,应该用True和False来代替,不然出现莫名其妙的错误,我也不知道为何。
- list1.remove(each)
- #这步如果被执行,那么程序就会自动跳出for循环,我估计是改变了list1导致循环不能进行。
- print(sum(list1))
复制代码
-----------------------比较正确的写法。
- list1=[1, 2, 4, 'a', 'cd']
- #创造一个切片,因为在下面的for循环语句中,一旦列表弹出一个值,就会跳出for循环,导致后面的元素不再进行判断操作
- list2=list1[:]
- for each in list1:
- if str(each).isdigit()!=True:
- list2.remove(each)
- print(sum(list2))
复制代码 |
|