python编写一个函数tans2ISBN13,对传入的10位ISBN书号(字符串类型)转换为13位ISBN书号(字符串类型)进行返回
作者:互联网
【问题描述】
编写一个函数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 tans2ISBN13(isbn10):
isbn = '978' + ''.join(isbn10[:-1].split('-'))
result = sum(map(lambda i: int(i[0]) * int(i[1]), zip(isbn, '131313131313'))) % 10
checksum = 0 if 10 - result == 10 else 10 - result
return '-'.join((isbn[:3], isbn[3], isbn[4:7], isbn[7:], str(checksum)))
def main():
isbn10 = input()
print(tans2ISBN13(isbn10))
main()
标签:10,ISBN,isbn10,书号,isbn,字符串,tans2ISBN13 来源: https://www.cnblogs.com/ljychengdu/p/16286359.html