好的,我要做的是在用户输入的数字的末尾添加一个校验位 这是代码。我会在事后解释。
isbn_list = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"]
isbn = [0,1,2,3,4,5,6,7,8,9]
isbnMult = [11,10,9,8,7,6,5,4,3,2,1]
number = input("Input ISBN number: ")
isbnnumber= 0
for i in range(len(number)):
found= False
count= 0
while not found:
if number[i] == isbn_list[count]:
found= True
isbnnumber= isbnnumber + isbn[count] * isbnMult[i]
else:
count += 1
total=isbnnumber%11
checkdigit=11-total
check_digit=str(checkdigit) #I know I have to append a number to a string
number.append(checkdigit) #so i thought that I would make the number into a
print(number) #string and then use the '.append' function to add
#it to the end of the 10 digit number that the user enters
但它不起作用
它给了我这个错误:
number1.append(checkdigit)
AttributeError: 'str' object has no attribute 'append'
从我的经验不足,我只能猜测这意味着我不能追加一个字符串? 关于如何将校验位附加到结尾的任何想法或建议 用户输入的号码?
答案 0 :(得分:1)
您无法在Python中修改字符串。因此没有附加方法。但是,您可以创建新字符串并将其分配给变量:
>>> s = "asds"
>>> s+="34"; s
'asds34'
答案 1 :(得分:0)
append
用于数组。
如果要连接字符串,请尝试使用+
。
>>> '1234' + '4'
'12344'
答案 2 :(得分:0)
Python中有两种类型的对象,可变和不可变。可变对象是那些可以就地修改的对象,其中名称所暗示的不可变对象不能就地更改,但是对于每次更新,您需要创建一个新的字符串。
因此,字符串对象没有append方法,这意味着需要就地修改字符串。
所以你需要更改一行
number1.append(checkdigit)
到
number1 += checkdigit
注意强>
虽然后来的sytax似乎是一个就地附加,但在这种情况下它是number1 = number1 + checkdigit
的替代,最终创建了一个新的不可变字符串。