鱼C论坛

 找回密码
 立即注册
查看: 2232|回复: 5

[已解决]求助!!

[复制链接]
发表于 2021-9-10 15:57:31 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
list1=[1,5,7,3,'love']
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:10:27
本帖最后由 逃兵 于 2021-9-10 16:11 编辑

list里面装的前面几个是数字,而非字符串,肯定用不了字符串的方法
这里把他转换为字符串就可以了
pop的参数只能删除下标,不能是元素
所以用remove就可以了
另外注意一下缩进
list1=[1,5,7,3,'love']
for each in list1:
    if not str(each).isdigit():
        list1.remove(each)
print(sum(list1))
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-9-10 16:10:27 | 显示全部楼层    本楼为最佳答案   
本帖最后由 逃兵 于 2021-9-10 16:11 编辑

list里面装的前面几个是数字,而非字符串,肯定用不了字符串的方法
这里把他转换为字符串就可以了
pop的参数只能删除下标,不能是元素
所以用remove就可以了
另外注意一下缩进
list1=[1,5,7,3,'love']
for each in list1:
    if not str(each).isdigit():
        list1.remove(each)
print(sum(list1))
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-9-10 16:31:40 | 显示全部楼层
list1=[1,5,7,3,'love']
for each in list1:
    if not each.isdigit():#这个isdigit()函数判断的前提是字符串  而你循环的list1列表包含数字和字符串 所以会报错
      list1.pop(each)
    print(sum(list1))






#这是另一种答案

list1=[1,5,7,3,'love']
list2 = []
for each in list1:
    if type(each)== str:#判断你循环的元素是不是字符串类型
        print(each)
    else:
        list2.append(each)
print(list2,sum(list2))
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-9-10 16:39:40 | 显示全部楼层
Angelina_Jolie 发表于 2021-9-10 16:31
list1=[1,5,7,3,'love']
for each in list1:
    if not each.isdigit():#这个isdigit()函数判断的前提是 ...

list1=[1,5,7,3,'love']

for each in list1:
    if type(each)== str:#判断你循环的元素是不是字符串类型
        list1.remove(each)
print(list1,sum(list1))

这样感觉不错啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-9-10 19:56:49 | 显示全部楼层
本帖最后由 傻眼貓咪 于 2021-9-10 20:00 编辑
list1 = [1, 5, 7, 3, 'love']
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
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-9-10 22:06:20 | 显示全部楼层
逃兵 发表于 2021-9-10 16:10
list里面装的前面几个是数字,而非字符串,肯定用不了字符串的方法
这里把他转换为字符串就可以了
pop的 ...

每次都是大哥解决问题!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-4 15:02

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表