- # -*- 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.codesnippet.cn/detail/291020136744.html
来源: http://www.codesnippet.cn/detail/291020136744.html