最近在疯狂的恶补Python(少壮不努力,长大编程序),偶然发现一个仁兄的文章,大喜过望,转过来了,再一次印证了Python的强大、便利,言归正传,转贴地址:
用Python计算身份证校验码。
原来的天朝良民证是15位,构成如下:
1~6位:地址码。采用的是行政区划代码,可以去统计局的网站查。
7~12位:生日期码。构成为yymmdd。
13~15位:顺序码。每个地区出生人口按顺序递增,最后一位奇数分给男的,偶数分给女的。
18位则有2点改动:
1.生日期码变为8位,构成为yyyymmdd。
2.增加校验码,即第18位。按照ISO 7064:1983.MOD 11-2校验码计算。
计算方法很无聊:
将身份证号码的前17位数分别乘以不同的系数。从第一位到第十七位的系数分别为:7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2
将这17位数字和系数相乘的结果相加。
用加出来和除以11,得到余数。
余数的结果只可能为0 1 2 3 4 5 6 7 8 9 10这11种,分别对应的最后一位身份证的号码为1 0 X 9 8 7 6 5 4 3 2。
弄懂这个后,很快就能写出Python的计算程序了: