ISBN-10 书号校验和(Python)

【问题描述】
国际标准书号ISBN-10由十位数字组成
最后1位是校验和,由前面9位数字唯一确定,以满足d1+2d2+3d3++10d10的结果为11的倍数,其中di表示从右倒数第i位数字。例如0-201-31455-?这个ISBN10书号中,di如下表所示,d1校验和未知:
d1 d2 d3 d4 d5 d6 d7 d8 d9 d10
? 5 5 4 1 3 1 0 2 0
校验和可以是0~10之间任何值,用字母'X'表示10
请编写一个程序,对输入的9位书号数字计算其校验和,并输出对应的ISBN书号
【输入形式】
【输出形式】
【样例输入】
0-201-31455
【样例输出】
ISBN:0-201-31455-X

string = input("")
def cal(string):
S = sum([i*int(j) for i,j in zip(range(10,1,-1),"".join(string.split('-')))])
N = 11 - S%11
if N == 10:
return string + '-X'
if N == 11:
return string + '-0'
return string + '-' + str(N)
print("ISBN:"+cal(string))