身份证校验位

知道一个人的身份证前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位数:校验码。

程序实现:

#coding=utf8

id_card = raw_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 L[y]

猜你喜欢

转载自www.cnblogs.com/yutb/p/10183334.html