Re: [問題] 新手list問題請教

作者: rexyeah (ccccccc)   2018-09-26 11:15:16
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
: : 感謝
作者: ckc1ark (偽物)   2018-09-26 12:09:00
try [0, 9, 9, 8]
作者: rexyeah (ccccccc)   2018-09-26 12:49:00
Output: [1, 0, 0, 9] 不對嗎? 不是每個+1 進位歸0嗎?
作者: handsomeLin (DoGLin)   2018-09-26 13:16:00
不是 只有最後一位加1 其他照常進位
作者: rexyeah (ccccccc)   2018-09-26 13:47:00
了解,那cutekid的解答是正確的

Links booklink

Contact Us: admin [ a t ] ucptt.com