代码改变世界

Python实现身份证校验功能

2013-08-03 17:00  楼台别  阅读(1648)  评论(0)    收藏  举报

Python实现身份证校验功能,一个身份证的校验程序,现在只能查 18 位的具体代码如下:
# -*- coding: cp936 -*-
 
while True:
   
    id_card=raw_input('请输入身份证号码:')
    print ''
    jy = str(id_card[len(id_card)-1:len(id_card)])
    if len(id_card) == 18 :
       
        x_arr = {'1': '7',
                 '2': '9',
                 '3': '10',
                 '4': '5',
                 '5': '8',
                 '6': '4',
                 '7': '2',
                 '8': '1',
                 '9': '6',
                 '10': '3',
                 '11': '7',
                 '12': '9',
                 '13': '10',
                 '14': '5',
                 '15': '8',
                 '16': '4',
                 '17': '2'}
        a=0
        for i in range(1,len(id_card),1):
            e = id_card[i-1:i]
            a = a + int(e)*int(x_arr.get(str(i)))
        b = str(a%11)
       
        y_arr = {'0': '1',
                 '1': '0',
                 '2': 'x',
                 '3': '9',
                 '4': '8',
                 '5': '7',
                 '6': '6',
                 '7': '6',
                 '8': '4',
                 '9': '3',
                 '10': '2'}
        c = str(y_arr.get(b))
       
        if jy == c:
            print '经计算校验码为',c,'和实际相同'
        else:
            print '经计算校验码为',c,'和实际不同'
 
    elif id_card == 'quit':
        break
    else:
        print '身份证位数不对'
       
    print ''
   
raw_input('按回车键键结束')  转载请注明诚信在线开户http://www.wind-fixasia.com