作者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://webptt.com/cn.aspx?n=bbs/Python/M.1537928410.A.387.html
1F:推 handsomeLin: 感觉你不需要写一个class 所以应该不用self 还是你 09/26 10:33
2F:→ handsomeLin: 的class继承list? 09/26 10:33
3F:推 handsomeLin: 第二感觉你逻辑错误 这题感觉是把整个list当一个数 09/26 10:37
4F:→ handsomeLin: 然後各位数加1吧? 你remove了全部的9看起来意义不 09/26 10:37
5F:→ handsomeLin: 明,这题list中如果都是string 你应该用hashmap映射 09/26 10:38
6F:→ handsomeLin: 加1後的值 如果加1变0的话处理下一个进位 如果不用进 09/26 10:38
7F:→ chinsun: 在上面有一个class要用来将输入都转为list,那边我已经写 09/26 10:38
8F:→ handsomeLin: 位就断掉loop 第二种情况是首位是0那就加一位在前面 09/26 10:38
9F:推 handsomeLin: 既然你有处理的function 那就先把list里的字串先处理 09/26 10:50
10F:→ handsomeLin: 数字阿... 09/26 10:50
12F:→ jxzhe: 啊 最後忘记转回int 09/26 19:23
13F:→ chinsun: 我成功完成整个程式了,谢谢大家推文和回文的指导QwQ 09/28 09:22