IBSN书号转换(Python求解)

【问题描述】
编写一个函数tans2ISBN13,对传入的10位ISBN书号(字符串类型)转换为13位ISBN书号(字符串类型)进行返回
【样例输入】
7-302-41058-5
【样例输出】
978-7-302-41058-4
【样例说明】
转换方法如下:
在原十位的基础上加上了978。最后一位为检验码,取值范围为0~9,由前12位通过以下计算公式算出:从左至右12位数字,奇数位数字乘以1,偶数位数字乘以3,再将乘积相加,对10求余,最后求10与余数的差若差值为0~9,则检验码为对应数字
若差值为10,则检验码为0

已知代码:
def main():
isbn10 = input()
print(tans2ISBN13(isbn10))

main()

def tans2ISBN13(s):
s = s.replace('-','')
n = int(s)
l = [0]*9
l[0] = int(n/1000000000)
l[1] = int(n/100000000%10)
l[2] = int(n/10000000%10)
l[3] = int(n/1000000%10)
l[4] = int(n/100000%10)
l[5] = int(n/10000%10)
l[6] = int(n/1000%10)
l[7] = int(n/100%10)
l[8] = int(n/10%10)

checkNum = abs(int((9*1+7*3+8*1+l[0]*3 + l[1]*1 + l[2]*3 + l[3]*1 + l[4]*3 + l[5]*1 + l[6]*3 + l[7]*1 + l[8]*3) % 10) - 10)

if(checkNum == 10):
    result = "978-{}-{}-{}-{}".format(l[0],''.join(str(i) for i in l[1:4]),''.join(str(i) for i in l[4:10]), 0)
    return result
else:
    result = "978-{}-{}-{}-{}".format(l[0],''.join(str(i) for i in l[1:4]),''.join(str(i) for i in l[4:10]), checkNum)
    return result

def main():
isbn10 = input()
print(tans2ISBN13(isbn10))

main()def tans2ISBN13(s):
s = s.replace('-','')
n = int(s)
l = [0]*9
l[0] = int(n/1000000000)
l[1] = int(n/100000000%10)
l[2] = int(n/10000000%10)
l[3] = int(n/1000000%10)
l[4] = int(n/100000%10)
l[5] = int(n/10000%10)
l[6] = int(n/1000%10)
l[7] = int(n/100%10)
l[8] = int(n/10%10)

checkNum = abs(int((9*1+7*3+8*1+l[0]*3 + l[1]*1 + l[2]*3 + l[3]*1 + l[4]*3 + l[5]*1 + l[6]*3 + l[7]*1 + l[8]*3) % 10) - 10)

if(checkNum == 10):
    result = "978-{}-{}-{}-{}".format(l[0],''.join(str(i) for i in l[1:4]),''.join(str(i) for i in l[4:10]), 0)
    return result
else:
    result = "978-{}-{}-{}-{}".format(l[0],''.join(str(i) for i in l[1:4]),''.join(str(i) for i in l[4:10]), checkNum)
    return result

def main():
isbn10 = input()
print(tans2ISBN13(isbn10))

main()