hi 各位高手: 愿請(qǐng)各位不吝賜教:想要實(shí)現(xiàn)一個(gè)類似于“彈夾”的功能:原集合是number = ('a','b','c','d','e','f'),想要寫一個(gè)循環(huán)語句使得每次 有且僅有一個(gè)number中的元素被pop掉,并流到集合now=[]中,而后這些數(shù)字被累計(jì)到集合done =[]中, 請(qǐng)問這個(gè)功能要怎么循環(huán)起來。嘗試著寫了一個(gè)程序,如下: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)但得到報(bào)錯(cuò):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'請(qǐng)問該怎樣解決
1 回答
已采納

pardon110
TA貢獻(xiàn)1038條經(jīng)驗(yàn) 獲得超227個(gè)贊
報(bào)錯(cuò)信息很明了,字符串對(duì)象上是沒有pop方法的,關(guān)鍵是下面兩句
numerL?=?numerL.pop()??#?返回'a',重新賦值給變量numerL nowL?=?numerL.pop(0)???#?此處的numberL已經(jīng)不是列表,而是字符串了不存在pop方法
列表的pop()默認(rèn)返回最后一個(gè)元素的值,帶參數(shù)則返回指定索引元素的值
而由你給出的代碼上下文中可知,numerL初始是個(gè)字符組成的列表,在進(jìn)行pop()賦值之后,numerL變量的實(shí)際類型已經(jīng)發(fā)生了改變(變成了字符串),在python字符串?dāng)?shù)據(jù)類型是不存在pop方法,所以報(bào)如下錯(cuò)
'str'?object?has?no?attribute?'pop'
添加回答
舉報(bào)
0/150
提交
取消