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
提交
取消