为了账号安全,请及时绑定邮箱和手机立即绑定

简单的while 循环问题 遇到报错:'str' object has no attribute 'pop'

简单的while 循环问题 遇到报错:'str' object has no attribute 'pop'

慕勒13948 2019-04-10 11:31:05
hi 各位高手: 愿请各位不吝赐教:想要实现一个类似于“弹夹”的功能:原集合是number = ('a','b','c','d','e','f'),想要写一个循环语句使得每次 有且仅有一个number中的元素被pop掉,并流到集合now=[]中,而后这些数字被累计到集合done =[]中, 请问这个功能要怎么循环起来。尝试着写了一个程序,如下:number = ('a','b','c','d','e','f')numerL =list(number)now =[]nowL=list(now)done=[]doneL=list(done)while len(numerL) > 0:numerL = numerL.pop()nowL = numerL.pop(0)doneL = now.append(numerL)print("number列:",numerL)print("now列:",nowL)print("done列",doneL)但得到报错:Traceback (most recent call last):File "C:/Users/lenovo/PycharmProjects/Test.9.16/tests/have a try.py", line 17, in nowL = numerL.pop()AttributeError: 'str' object has no attribute 'pop'请问该怎样解决
查看完整描述

1 回答

已采纳
?
pardon110

TA贡献1038条经验 获得超227个赞

报错信息很明了,字符串对象上是没有pop方法的,关键是下面两句

numerL = numerL.pop()  # 返回'a',重新赋值给变量numerL
nowL = numerL.pop(0)   # 此处的numberL已经不是列表,而是字符串了不存在pop方法

列表的pop()默认返回最后一个元素的值,带参数则返回指定索引元素的值

而由你给出的代码上下文中可知,numerL初始是个字符组成的列表,在进行pop()赋值之后,numerL变量的实际类型已经发生了改变(变成了字符串),在python字符串数据类型是不存在pop方法,所以报如下错

'str' object has no attribute 'pop'


查看完整回答
1 反对 回复 2019-04-10
  • 1 回答
  • 0 关注
  • 2856 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信