1. 程式人生 > >身份證校驗位

身份證校驗位

知道一個人的身份證前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]