[問題] 新手list問題請教

作者: chinsun   2018-09-26 10:20:08
大家好,我目前在國外求學,算是程式新手
班上一個人都不認識,助教的口音也幾乎聽不懂QQ
只好拿作業上來問
題目是要寫一個increment的方法,輸入和輸出的型態都要是list
例子:
z=[0,9,9,9]
z.increment()
>> [1,0,0,0]
我目前寫的:
def increment(self):
zadd=self.amount
a=zadd
while '9' in a:
a.remove('9')
if a==[]:
zadd=['0',zadd] #如果陣列裡全是9,在最前面加0
i=len(zadd)
while i!=0:
if zadd[i-1]=='9' :
zadd[i-1]='0' #一項一項將9轉為0
i-=1
else:
zadd[i-1]+=1 #非9的話加1
return zadd
將9轉為0那邊沒有問題
但當陣列全為9,在最前面加入0那邊
不知道為什麼zadd其中的9也跟著a被remove掉
舉個例子,如果輸入['0','9','9','9'],a會變成['0'],但zadd也會一起變成['0']
但我以為zadd應該還是原本的樣子
第二個問題是else裡+1那邊,請問要怎麼做才能讓list中的東西進行運算呢
我試過將他轉成string,但還是顯示must str not int
感謝
作者: handsomeLin (DoGLin)   2018-09-26 10:33:00
感覺你不需要寫一個class 所以應該不用self 還是你的class繼承list?第二感覺你邏輯錯誤 這題感覺是把整個list當一個數然後各位數加1吧? 你remove了全部的9看起來意義不明,這題list中如果都是string 你應該用hashmap映射加1後的值 如果加1變0的話處理下一個進位 如果不用進
作者: chinsun   2018-09-26 10:38:00
在上面有一個class要用來將輸入都轉為list,那邊我已經寫
作者: handsomeLin (DoGLin)   2018-09-26 10:38:00
位就斷掉loop 第二種情況是首位是0那就加一位在前面既然你有處理的function 那就先把list裡的字串先處理數字阿...
作者: jxzhe   2018-09-26 19:16:00
https://i.imgur.com/2Rcn2GN.jpg啊 最後忘記轉回int
作者: chinsun   2018-09-28 09:22:00
我成功完成整個程式了,謝謝大家推文和回文的指導QwQ

Links booklink

Contact Us: admin [ a t ] ucptt.com