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'
添加回答
举报
0/150
提交
取消