计算身份证尾号的代码
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。