身份证校验位
知道一个人的身份证前17位,得到第18位:
1、将前面的身份证号码17位数分别乘以不同的系数。从第一位到第十七位的系数分别为:7-9-10-5-8-4-2-1-6-3-7-9-10-5-8-4-2。
2、将这17位数字和系数相乘的结果相加。
3、用加出来和除以11,得出余数。
4、余数只可能有0-1-2-3-4-5-6-7-8-9-10这11个数字。其分别对应的最后一位身份证的号码为1-0-X-9-8-7-6-5-4-3-2。
5、身份证的第18位数字是校验位。最后一位号码X就是罗马数字X。
编排的规则:
身份证一共有18位数,他们分别的表示:
1:1.2两位数:所在的省份的代码。
2:3.4两位数:所在的城市的代码。
3:5.6两位数:所在的区县的代码。
4:7-14位数:出生的年月日。
5:15.16两位数:所在地派出所的代码。
6:17位数:奇数为男性,偶数为女性。
7:18位数:校验码。
程序源码:
id_card = input('输入身份证前17位:') coefficient = [7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2] x = 0 for i in range(len(id_card)): a = int(id_card[i]) * coefficient[i] x = x + a y = x % 11 L = ['1','0','X','9','8','7','6','5','4','3','2'] print("身份证第18位:",L[y])