看板 Python 關於我們 聯絡資訊
a = [0, 9, 9, 9] def s(n): return n+1 if n < 9 else (n+1) % 10 print map(lambda x: s(x), a) == Output [1, 0, 0, 0] ※ 引述《cutekid (可愛小孩子)》之銘言: : def increment(self): : num = int(''.join(str(x) for x in self)) : num = num + 1 : numList = list(str(num).zfill(len(self))) : return [int(x) for x in numList] : print(increment([0,9,9,9])) : 參考: : 1. How to convert list to string [duplicate] : https://bit.ly/2xz7uSj : 2. Nicest way to pad zeroes to a string : https://bit.ly/2IidRxs : 3. how do I convert a string to a list : https://bit.ly/2OQShTf : ※ 引述《chinsun ()》之銘言: : : 大家好,我目前在國外求學,算是程式新手 : : 班上一個人都不認識,助教的口音也幾乎聽不懂QQ : : 只好拿作業上來問 : : 題目是要寫一個increment的方法,輸入和輸出的型態都要是list : : 例子: : : z=[0,9,9,9] : : z.increment() : : 我目前寫的: : : 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), 來自: 61.221.35.72 ※ 文章網址: https://www.ptt.cc/bbs/Python/M.1537931717.A.E73.html
ckc1ark: try [0, 9, 9, 8] 09/26 12:09
rexyeah: Output: [1, 0, 0, 9] 不對嗎? 不是每個+1 進位歸0嗎? 09/26 12:49
handsomeLin: 不是 只有最後一位加1 其他照常進位 09/26 13:16
rexyeah: 了解,那cutekid的解答是正確的 09/26 13:47