我正在尝试从 12 位 ISBN 返回 ISBN-13 校验位,但遇到了一个奇怪的错误。
将以下内容作为我的 12 位 ISBN - 978311020318
每个数字交替乘以 1 或 3。
9*1 + 7*3 + 8*1 + 3*3 + 1*1 + 1*3 + 0*1 + 2*3 + 0*1 + 3*3 + 1*1 + 8*3 = 91
91 % 10 = 1
10 - 1 = 9,这是我们的 ISBN-13 校验位。
这是我目前所拥有的......
def isbn_check_digit(isbn):
s = 0
for i, d in enumerate(isbn):
if i % 2 == 0:
s += int(d*1)
else:
s += int(d*3)
print(s)
return (10 - (s % 10))
print(isbn_check_digit("978311020318"))
输出以下...
786
1127
1239
1461
1794
2683
7
我把它拆开看看发生了什么
if i % 2 == 0:
s += int(d*1)
print(s)
else:
s += 0
9
17
18
18
18
19
1
1 的倍数工作正常,但为什么它在 3 的倍数时表现异常?