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

  • 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'

    请问该怎样解决


慕勒13948
浏览 2952回答 1
1回答

pardon110

报错信息很明了,字符串对象上是没有pop方法的,关键是下面两句numerL = numerL.pop()  # 返回'a',重新赋值给变量numerL nowL = numerL.pop(0)   # 此处的numberL已经不是列表,而是字符串了不存在pop方法列表的pop()默认返回最后一个元素的值,带参数则返回指定索引元素的值而由你给出的代码上下文中可知,numerL初始是个字符组成的列表,在进行pop()赋值之后,numerL变量的实际类型已经发生了改变(变成了字符串),在python字符串数据类型是不存在pop方法,所以报如下错'str' object has no attribute 'pop'
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python