Python实现图书10位ISBN号转换为13位

ISBN是图书的一个国际通用编号,详细信息可参考维基百科中的词条:http://zh.wikipedia.org/wiki/ISBN

ISBN在07年前使用的是10位编号,07年后并入国际货品编号,升级为13位,以下为将10位编号转换为13位编号的Python代码:

def isbn10to13(isbn):
    if len(isbn) != 10:
        return None
    isbn = "978"+isbn[:-1]
    sum = 0
    for i, b in enumerate(isbn):
        sum += (1 if i % 2 == 0 else 3) * int(b)
    return "%s%d" % (isbn, (10 - sum % 10) % 10)

输入内容为10位的ISBN号去除连接符“-”的字符串,输出内容为13位的ISBN号去除连接符“-”的字符串。主要的工作在于计算出最后一位的校验码。

blog comments powered by Disqus