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

看板Python作者 (NickLin)時間6年前 (2018/09/26 13:38), 6年前編輯推噓4(405)
留言9則, 2人參與, 6年前最新討論串4/6 (看更多)
※ 引述《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 : 感謝 先回答你第一個問題,你a = zadd的時候只是把zadd的記憶體位置傳給a而已 這點你可以用id()去看,他們指向的是同一個物件 你直接對這個物件操作(remove) 自然就刪掉zadd 或是你self.count都一樣被改變了 你真的想要去算有幾個9 又不考慮time complexity直接用count就行了 zadd.count('9) == len(zadd) 這題解法 可以利用上一題直接join轉成字串再轉成數字+1 python數字的上限取局於記憶體 所以基本上不用擔心overflow的問題 但是顯然不是最佳解 比如說list長度是個一萬 還是有機會overflow 下面寫一段假設裡面是數字 for i in range(len(z) - 1, -1, -1): z[i] = (z[i] + 1) % 10 if z[i]: break if z and not z[0]: z.insert(0, 0) (如果是字串 就用int先轉成數字 然後再轉回str就行了 if z[i] 改成 if z[i] != '0') 從最後一位開始加1 如果不是0代表不用進位break直接結束loop 如果全部都是0 就代表要新增一位(照你的敘述是擺0) 我上面這段是直接對z操作 p.s zadd = [0, zadd] 這樣會是[int , list]的形式 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 69.181.62.237 ※ 文章網址: https://www.ptt.cc/bbs/Python/M.1537940294.A.689.html ※ 編輯: handsomeLin (69.181.62.237), 09/26/2018 13:43:29

09/27 10:18, 6年前 , 1F

09/27 10:21, 6年前 , 2F
你們教授這題考的是將list型態轉int型態後 ,經過計算後
09/27 10:21, 2F

09/27 10:21, 6年前 , 3F
,再將int轉list型態
09/27 10:21, 3F

09/27 10:29, 6年前 , 4F
如果沒有要強制前面加新的元素 ,下圖是答案
09/27 10:29, 4F

09/27 10:48, 6年前 , 5F

09/27 23:29, 6年前 , 6F
這位大大你的code reverse了東西兩次呢
09/27 23:29, 6F

09/27 23:30, 6年前 , 7F
還有你的字串長度hard code了...
09/27 23:30, 7F

09/28 08:40, 6年前 , 8F
謝謝樓上指教 ,因為我不是專業的coder ,純興趣 ,不過您
09/28 08:40, 8F

09/28 08:40, 6年前 , 9F
的建議我會聽進去 ,謝謝您的即時回饋 , 謝謝
09/28 08:40, 9F
文章代碼(AID): #1Rgnj6Q9 (Python)
文章代碼(AID): #1Rgnj6Q9 (Python)