完整版python身份证号验证(第1版)

您所在的位置:网站首页 身份核验系统查询 完整版python身份证号验证(第1版)

完整版python身份证号验证(第1版)

2024-07-12 18:21| 来源: 网络整理| 查看: 265

       在python中,你只要稍稍动动键盘,可能就会有一大波程序出来,比如今天小编想要分享的这款身份证号验证系统,此程序不想本站的其他博客,只能判断最后一位数字,我的这款验证器可以验证所有位数的身份号码。

一、身份证号前六位(地区代码)验证方法

       作者再次使用的是暴力查找法,先将全国三千多个区级代码存入一个rtf文件(小编使用的是rtf文件,txt、doc等文件都可以)。然后在程序中读取,如果前六位在其中,那么就算判断通过。

↓↓↓第一段代码↓↓↓

n = int(input("请输入身份证号前六位:")) with open('file.rtf', 'r') as f: content = f.read() if str(n) in content: date = input("前六位正确,请输入身份证第七位到第十四位")

二、身份证号生日部分判断

这段的判断主要是判断是否为合法日期,程序如下

pingnian_month = [0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31] runnian_month = [0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31] year = int(date[0:4]) # 截取年份 month = int(date[4:6]) # 截取月份 day = int(date[6:]) # 截取日期 isRunNian = False # 判断是否是闰年 if year % 4 == 0 and year % 100 != 0 and year % 400 == 0: isRunNian = True if month < 1 or month > 12: # 判断月份是否合法 print("您的身份证号有误,非法用户禁止进入!") if isRunNian: # 判断日期是否合法 if day < 1 or day > pingnian_month[month]: print("您的身份证号有误,非法用户禁止进入!") else: # 判断日期是否合法 if day < 1 or day > runnian_month[month]: print("您的身份证号有误,非法用户禁止进入!") print("你输入的%s是有效日期" % date)

三、校验位判断(划重点!!)

最后一位的算法有点难,大家可以自己去搜索一下,这里就不详细展开了,具体链接在这里身份证倒数第一位算法

k = input("请输入身份证号倒数四位:") users += str(n) + date + k tot = 0 chengshu = [7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2] yushu = ["1","0","X","9","8","7","6","5","4","3","2"] for i in range(0,17): a = int(users[i]) * chengshu[i] tot += a b = int(tot) % 11 c = yushu[b] if c == users[17]: print("您的身份证号正确") else: print("您的身份证号有误,非法用户禁止进入!")

四、代码汇总 users = "" n = int(input("请输入身份证号前六位:")) with open('file.rtf', 'r') as f: content = f.read() if str(n) in content: date = input("前六位正确,请输入身份证第七位到第十四位") if len(date) == 8 and date.isdigit(): pingnian_month = [0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31] runnian_month = [0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31] year = int(date[0:4]) # 截取年份 month = int(date[4:6]) # 截取月份 day = int(date[6:]) # 截取日期 isRunNian = False # 判断是否是闰年 if year % 4 == 0 and year % 100 != 0 and year % 400 == 0: isRunNian = True if month < 1 or month > 12: # 判断月份是否合法 print("您的身份证号有误,非法用户禁止进入!") if isRunNian: # 判断日期是否合法 if day < 1 or day > pingnian_month[month]: print("您的身份证号有误,非法用户禁止进入!") else: # 判断日期是否合法 if day < 1 or day > runnian_month[month]: print("您的身份证号有误,非法用户禁止进入!") print("你输入的%s是有效日期" % date) k = input("请输入身份证号倒数四位:") users += str(n) + date + k tot = 0 chengshu = [7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2] yushu = ["1","0","X","9","8","7","6","5","4","3","2"] for i in range(0,17): a = int(users[i]) * chengshu[i] tot += a b = int(tot) % 11 c = yushu[b] if c == users[17]: print("您的身份证号正确") else: print("您的身份证号有误,非法用户禁止进入!") else: print("您的身份证号有误,非法用户禁止进入!") 五、运行结果 身份证号真假性110105202310010025真110105202313010025假

有没有人能够看的出下面的身份证号错在哪里了吗?  

本文章使用了noob_python以及数字化信息化智能化解决方案的作品,再次统一鸣谢!

还愣着干嘛呢,一键三连!!



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3