最近在写高精度减法时,遇到如下的错误提示:
TypeError: ‘str’ object does not support item assignment
在程序中,当出现借位情况时
if a<b:
n1[i+1]=n1[i+1]-1
n1[i]=n1[i]+10
由于n1是字符串,不是数组或列表,因此对字符串进行修改时提示该错误。
改正方法是将n1=n1[::-1]改为
n11=[int(x) for x in n1[::-1]] 转换为列表即可完成。
总结:字符串是不可变对象,不要试图用下标的方法去改变字符串的值。
def sub(n11,n21):
fh=''
if int(n11)<int(n21):
n11,n21=n21,n11
fh='-'
if len(n11)>len(n21):
n21='0'*(len(n11)-len(n21))+n21
print(str(n11))
print(str(n21))
n1=n11[::-1]]
n2= n21[::-1]
i=0
r=[]
while (i<len(n1)):
if int(n1[i])<int(n2[i]):
t1=int(n1[i+1])
**n1[i+1]=str(t1-1)**
n1[i]=str(int(n1[i])+10)
r.append(int(n1[i])-int(n2[i]))
i+=1
return r