最近在写高精度减法时,遇到如下的错误提示:
TypeError: ‘str’ object does not support item assignment
在程序中,当出现借位情况时
if a<b:
n1[i+1]=n1[i+1]-1n1[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,n11fh='-'if len(n11)>len(n21):n21='0'*(len(n11)-len(n21))+n21print(str(n11))print(str(n21))n1=n11[::-1]]n2= n21[::-1]i=0r=[]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+=1return r