求助!!
list1=for each in list1:
if not each.isdigit():
list1.pop(each)
print(sum(list1))
请问大佬们,这个程序为什么不能达到删除‘love’后计算总和的结果呢?
运行后报错是说“AttributeError: 'int' object has no attribute 'isdigit'”米有属性??看不懂 本帖最后由 逃兵 于 2021-9-10 16:11 编辑
list里面装的前面几个是数字,而非字符串,肯定用不了字符串的方法
这里把他转换为字符串就可以了
pop的参数只能删除下标,不能是元素
所以用remove就可以了
另外注意一下缩进
list1=
for each in list1:
if not str(each).isdigit():
list1.remove(each)
print(sum(list1))
list1=
for each in list1:
if not each.isdigit():#这个isdigit()函数判断的前提是字符串而你循环的list1列表包含数字和字符串 所以会报错
list1.pop(each)
print(sum(list1))
#这是另一种答案
list1=
list2 = []
for each in list1:
if type(each)== str:#判断你循环的元素是不是字符串类型
print(each)
else:
list2.append(each)
print(list2,sum(list2)) Angelina_Jolie 发表于 2021-9-10 16:31
list1=
for each in list1:
if not each.isdigit():#这个isdigit()函数判断的前提是 ...
list1=
for each in list1:
if type(each)== str:#判断你循环的元素是不是字符串类型
list1.remove(each)
print(list1,sum(list1))
这样感觉不错啊 本帖最后由 傻眼貓咪 于 2021-9-10 20:00 编辑
list1 =
for n, each in enumerate(list1): # 這裡把 n 當作索引 0 1 2 ... ,each 是元素 1 5 7 3 'love'
if type(each) != int: # 應該用 type(),isdigit() 是一個字符串函數,您不能為整數調用此方法。
list1.pop(n) # pop() 參數必須是索引位置,不是元素,你的代碼 pop(each) 是錯的
print(sum(list1))16
另外:
A = "123"
B = 123
print(A.isdigit()) # 字符串用 isdigit()
print(type(B) == int) # 整數用 type()True
True 逃兵 发表于 2021-9-10 16:10
list里面装的前面几个是数字,而非字符串,肯定用不了字符串的方法
这里把他转换为字符串就可以了
pop的 ...
每次都是大哥解决问题!!{:10_266:}
页:
[1]