鱼C论坛

 找回密码
 立即注册
楼主: 最好是明天

[作品展示] python实现身份证号码有效性验证

  [复制链接]
发表于 2015-11-28 11:54:03 | 显示全部楼层
guailai看看
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-11-28 16:32:57 | 显示全部楼层
来看看
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-11-28 23:48:14 | 显示全部楼层
kankanshishayo~~~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-11-29 21:36:11 | 显示全部楼层
这个怎么实现呢?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-12-3 22:51:41 | 显示全部楼层
小甲鱼
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-12-4 16:04:46 | 显示全部楼层
学习了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-12-5 11:21:44 | 显示全部楼层
想看
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-12-5 23:07:21 | 显示全部楼层
see
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-12-7 00:19:06 | 显示全部楼层
应该是正则匹配吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-12-7 13:48:19 | 显示全部楼层
学习学习
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-12-7 13:56:04 | 显示全部楼层
过来学习楼主的分享
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-12-7 13:57:49 | 显示全部楼层
学习学习
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-12-7 14:38:47 | 显示全部楼层
学习下~~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-12-7 17:15:47 | 显示全部楼层
一定要看一下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-12-7 18:27:11 | 显示全部楼层
看了这段代码我稍微改了一下,python3能用

import time

def checkIdcard(idcard):
    errors=['验证通过!','身份证号码位数不对!','身份证号码出生日期超出范围或含有非法字符!','身份证号码校验错误!','身份证地区非法!']
    area={"11":"北京","12":"天津","13":"河北","14":"山西","15":"内蒙古","21":"辽宁","22":"吉林","23":"黑龙江","31":"上海","32":"江苏","33":"浙江","34":"安徽","35":"福建","36":"江西","37":"山东","41":"河南","42":"湖北","43":"湖南","44":"广东","45":"广西","46":"海南","50":"重庆","51":"四川","52":"贵州","53":"云南","54":"西藏","61":"陕西","62":"甘肃","63":"青海","64":"宁夏","65":"新疆","71":"台湾","81":"香港","82":"澳门","91":"国外"}
    idcard = str(idcard.strip())
    if idcard[0:2] not in area:
        return errors[4]
    if len(idcard) not in (15,18):
        return errors[1]
    if (len(idcard)==15 and idcard.isdigit()==False) or (len(idcard)==18 and idcard[0:-1].isdigit()==False):
        return errors[2]
    if len(idcard)==15 and idcard.isdigit():
        birth = '19'+idcard[6:12]
    if len(idcard)==18 and idcard[0:-1].isdigit():
        birth = idcard[6:14]
    try:
        checkBirth = time.strptime(birth,'%Y%m%d')
        if len(idcard)==15:
            return errors[0]
        else:
            S = (int(idcard[0]) + int(idcard[10])) * 7 +(int(idcard[1]) + int(idcard[11])) * 9 +(int(idcard[2]) + int(idcard[12])) * 10 +(int(idcard[3]) + int(idcard[13])) * 5 +(int(idcard[4]) + int(idcard[14])) * 8 +(int(idcard[5]) + int(idcard[15])) * 4 +(int(idcard[6]) + int(idcard[16])) * 2 +int(idcard[7]) * 1 + int(idcard[8]) * 6 +int(idcard[9]) * 3
            Y = S % 11
            JYM = "10X98765432"
            M = JYM[Y]
            if M == idcard[17]:
                return errors[0]
            else:
                return errors[3]
    except ValueError:
        return errors[2]

id = input('请输入身份证:')
print(checkIdcard(id))
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-12-8 12:28:44 | 显示全部楼层
这个真的可以好好学一下哎
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-12-8 16:59:24 | 显示全部楼层
好利害。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-12-8 17:26:51 | 显示全部楼层
看看LZ是如何实现的,多谢了!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-12-9 11:38:16 | 显示全部楼层
学习一下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-12-9 19:04:00 | 显示全部楼层
看一下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-1 12:55

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表