计算身份证尾号的代码

2017-11-21

以前老站点上写过一篇如何计算身份证尾号,现在还有一些搜索引擎收录,时不时有一些访问过来,所以再补上。

计算身份证尾号的 Python 代码如下:

def calculate(s):
    '''Given the first 17 digits, return the last digit as a string.

    If something is wrong, return None.
    '''
    if len(s) == 17 and set(s).issubset('0123456789'):
        n = sum(map(lambda a, b: a * int(b),
                (7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2), s)) % 11
        return '10X98765432'[n]
    else:
        return None

其他语言请自行翻译。计算公式源于国标 GB 11643-1999