作者chinsun ()
看板Python
標題[問題] 新手list問題請教
時間Wed Sep 26 10:20:08 2018
大家好,我目前在國外求學,算是程式新手
班上一個人都不認識,助教的口音也幾乎聽不懂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
感謝
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 131.212.251.144
※ 文章網址: https://www.ptt.cc/bbs/Python/M.1537928410.A.387.html
推 handsomeLin: 感覺你不需要寫一個class 所以應該不用self 還是你 09/26 10:33
→ handsomeLin: 的class繼承list? 09/26 10:33
推 handsomeLin: 第二感覺你邏輯錯誤 這題感覺是把整個list當一個數 09/26 10:37
→ handsomeLin: 然後各位數加1吧? 你remove了全部的9看起來意義不 09/26 10:37
→ handsomeLin: 明,這題list中如果都是string 你應該用hashmap映射 09/26 10:38
→ handsomeLin: 加1後的值 如果加1變0的話處理下一個進位 如果不用進 09/26 10:38
→ chinsun: 在上面有一個class要用來將輸入都轉為list,那邊我已經寫 09/26 10:38
→ handsomeLin: 位就斷掉loop 第二種情況是首位是0那就加一位在前面 09/26 10:38
推 handsomeLin: 既然你有處理的function 那就先把list裡的字串先處理 09/26 10:50
→ handsomeLin: 數字阿... 09/26 10:50
→ jxzhe: 啊 最後忘記轉回int 09/26 19:23
→ chinsun: 我成功完成整個程式了,謝謝大家推文和回文的指導QwQ 09/28 09:22