标签:10 ISBN isbn10 书号 isbn 字符串 tans2ISBN13
【问题描述】
编写一个函数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
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。