Chinaunix首页 | 论坛 | 博客
  • 博客访问: 309002
  • 博文数量: 214
  • 博客积分: 4258
  • 博客等级: 上校
  • 技术积分: 2021
  • 用 户 组: 普通用户
  • 注册时间: 2010-12-02 09:16
个人简介

http://blog.csdn.net/ly21st http://ly21st.blog.chinaunix.net

文章分类

全部博文(214)

文章存档

2018年(16)

2015年(1)

2014年(2)

2012年(22)

2011年(173)

分类: Python/Ruby

2011-11-30 10:44:34

#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 "输入的身份证有误"
阅读(532) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~