#coding:gbk
def P_cardid_check(identityNo):
'''
@组件名称: 身份证件号码校验
@组件风格: 判断型
@组件类型: 横向参数模块
@中文注释: 判断15/18位的身份证号码是否合法
@入参:
@param identityNo str 身份证号
@出参:
None
@返回状态
@return 0 校验未通过
@return 1 校验通过
@作 者: 张进
@创建时间: 2010-04-27
@使用范例:
'''
try:
if (not type(identityNo) is str):
return [0, 'A01C001', '身份证类型不符', [None]]
if(len(identityNo) != 18):
if(len(identityNo) == 15):
_result_ = A_TansIdentityNum(identityNo)
if(_result_[0] != 0):
return _result_
else:
identityNo = _result_[3]
else:
return [0, 'A01C002', '身份证长度不符', [None]]
s = list(identityNo[0:17])
wi = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2]
ai = {'0':'1', '1':'0', '2':'X', '3':'9', '4':'8', '5':'7', '6':'6', '7':'5', '8':'4', '9':'3', '10':'2'}
lastNum = ai[str(reduce((lambda x, y:x + y), map(lambda x, y:int(x) * y, s, wi)) % 11)]
if(str(lastNum) == identityNo[17:18]):
return [1, None, None, [None]]
else:
return [0, 'A01C003', '校验未通过', [None]]
except Exception, e:
return [0, 'A01C004', '身份证校验失败:' + str(e), [None]]
result=P_cardid_check("443456789611210837")
if result[0]== 1 :
print "身份证正确"
else:
print "输入的身份证有误"
阅读(572) | 评论(0) | 转发(0) |