身份證校驗位
阿新 • • 發佈:2018-12-27
知道一個人的身份證前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]