用Python校验身份证号码真伪

作者&投稿:仲长蝶 (若有异议请与网页底部的电邮联系)
python 作业:“校验身份证号码真伪”报告总结~

给你2个思路:
自己写身份证校验的正则表达式,然后校验
网上有很多在线的WEB页面提供身份证真伪校验,可以通过python调用他们的http接口进行身份证真伪校验

身份证正则表达式规则或在线校验页面,请自行百度。

有身份证的API接口,免费的,你可以试试(里面的apikey 你要自己去获取,另外python代码也有示例的)。
附上代码和执行效果:

#这个算法都给了,应该比较简单吧。我也很菜,随意写了一个。异常没做,你可以自##己加一下。做一些验证过滤。不知道随机是不是真是随意随机,我没有按照身份证规##则做随机。是真的随机了18位。。。 如果你有规则,也可以自己写一个。
import random

yushu=[x for x in range(0,11)] 
ma=['1','0','X','9','8','7','6','5','4','3','2','1']

def yanzheng(nid):

dicma=dict(zip(yushu,ma))

sum=0

for x,y in enumerate(nid[:-1]):

sum+=((2**(18-x-1))%11)*int(y) #17位对应系数相乘的和

    if nid[-1]==dicma[sum%11]: #校验码对照
    return '%s True'%nid
    else:
    return '%s False'%nid
def readfile(fname):
f=open(fname,'rb')
for line in f.readlines():
print  yanzheng(line.strip())
f.close()
def randnum():
idstr=''
for i in range(17): #前17位随机
idstr+=str(random.randint(0,9))

idstr+=random.choice(ma) #最后一位从列表种随意一个,因为有X
return idstr


if __name__=="__main__":
nid=raw_input('Please enter your ID: ') #用户输入ID,没做任何验证
print yanzheng(nid)  #验证身份证
readfile('id.txt')   #从文件读出来 再验证
print yanzheng(randnum())  #随机一个 在验证



python3.4 编码有哪些
首先从老大哥说起。跟很多人一样,大学读了这么久,久仰ASCII编码的大名。要说这个老大哥,我们再先从字节说起。一个字节包括八个比特位,每个比特位表示0或1,一个字节即可表示从00000000到11111111共2^8=256个数字。一个ASCII编码使用一个字节(除去字节的最高位作为作奇偶校验位),ASCII编码实际使用...

python后端开发需要学什么?
Python是一个有条理的、强大的面向对象的程序设计语言;在人工智能领域,在网络爬虫、服务器开发、3D游戏、网络编程、数据分析、Web开发、运维、测试等多个领域都有不俗的表现,但学习... Python 是一个有条理的、强大的面向对象的程序设计语言;在人工智能领域,在网络爬虫、服务器开发、3D游戏、网络编程、数据分析、...

学习数据分析需要掌握哪些知识?
分析工具 对于分析工具,SQL 是必须会的,还有要熟悉Excel数据透视表和公式的使用,另外,还要学会一个统计分析工具,SAS作为入门是比较好的,VBA 基本必备,SPSS\/SAS\/R 至少要熟练使用其中之一,其他分析工具(如 Matlab)可以视情况而定。编程语言 数据分析领域最热门的两大语言是 R 和 Python。涉及...

魔兽世界用的什么数据库?
游戏中的登录、排队、验证身份应该都是又这一部分完成的。-聊天频道: 聊天频道是一个独立的服务器,这一点可以从游戏中人物、地图都很卡而聊天却完全不受影响的情况分析出来,聊天不可以离线发送消息,因此我可以武断的认为,聊天服务器基本不操作数据库,至多在当前无法处理或者玩家暂时接收不到的情况下,使用一些临时的...

C#(加密)Des很容易被破解吗?
当然AES安全性确实高于DES,不论是密钥长度、抗分析能力都远超后者),可是代码变成白盒,算法再厉害,解密的密钥直接可以从代码中分析出来,算法也就没有意义了。因此算法部分最好是用C\/C++这些可以直接运行的,目标文件为机器码级别的语言开发相对比较安全。同样作为中间语言的java、python也有这种缺点。

哪些CAD\/ CAM软件比较好用?
现在CAD\/CAM行业中普遍使用的是MASTERCAM、CIMATRON、PRO-E、UG、CATIA、CAD... 1、MASTERCAM是如今珠三角最常用的一种软件,它最早进入中国大陆,工厂的CNC师傅70%使用MASTERCAM,它集画图和编程于一身,绘制线架构快,缩放功能好。 2、CIMATRON是迟一些进入中国的以色列军方软件,在刀路上的功能优越于MASTERCAM,弥补了MAS...

零基础能学JAVA开发吗?
基础学Java,只要方法得当,就有机会学好Java开发。学Java就像交朋友一样,从陌生到熟悉再到死党,随着学习的深入,你会发现Java并不是想象的那么枯燥和困难,甚至有种妙不可言的乐趣。1、透彻理解面向对象 只有理解了面向对象才能感知Java开发的绝妙, 面向对象是Java中很重要的一个概念,如果理解不透彻...

如何理解Python装饰器
装饰器本质上是一个Python函数,它可以让其他函数在不需要做任何代码变动的前提下增加额外功能,装饰器的返回值也是一个函数对象。它经常用于有切面需求的场景,比如:插入日志、性能测试、事务处理、缓存、权限校验等场景。装饰器是解决这类问题的绝佳设计,有了装饰器,我们就可以抽离出大量与函数功能本身...

如何理解Python装饰器
装饰器本质上是一个Python函数,它可以让其他函数在不需要做任何代码变动的前提下增加额外功能,装饰器的返回值也是一个函数对象。它经常用于有切面需求的场景,比如:插入日志、性能测试、事务处理、缓存、权限校验等场景。装饰器是解决这类问题的绝佳设计,有了装饰器,我们就可以抽离出大量与函数功能本身...

浠水县19797964002: 在arcgis中怎样对身份证号码进行查重 -
邬芬复方: 新建一个字段,然后单击这个字段计算(当然存储身份证号码的字段是“身份证号码”):用python代码:ss={} def a(s): if s in ss: ss[s]+=1 else: ss[s]=1 return ss[s] 最后一栏输入:a( !身份证号码! )

浠水县19797964002: onkeyup正则表达式验证身份证号? -
邬芬复方: 十八位数字或17位数字加X(x):^((\d{18})|(\d{17}[Xx]))$

浠水县19797964002: java字符串操作,验证输入的身份证合法与否 -
邬芬复方: /*** 定义一个方法,输入一个身份证号码(18)位,最终返回一个字符串,格式如下:“尊敬的男士(女士),您是****年**月**日出生的.”* 要求:如果输入的身份证不是18位,或者格式不正确(包含非数字字符,除了最后一位的X除外)...

浠水县19797964002: 用C++写的判断身份证真假的程序,输入正确的身份证号时,也输出<<"该身份证不合法"<<.请指教! -
邬芬复方: 从屏幕中读取的数据是字符串,所以需要字符串处理过程 下面是个简单的程序 #include #include using namespace std; int main() { char inCd[20] = {0}; char *trueId = "123456789abcdef123"; int result = 0xff; cout << "请输入身份证:" ; fgets(...

浠水县19797964002: 校验身份证号码是否正确 -
邬芬复方: //15位身份证组成:省(2) 市(2) 区县(2) 生日年(2) 月(2) 日(2) 序列号(3(奇数男,偶数女)) //18位身份证组成:1、出身年加上两位, // 2、加上最后校验位第18位从前17位计算而来, // 所以系统可以自动检测是否错误 //15位...

浠水县19797964002: 在文本框中输入自己的身份证号,按回车键验证其合法性. -
邬芬复方: 用一个文本框接收字符串输入,让后在按下回车键时分别判断输入字符的合法性.举个例子,例如输入011205,判断其前两位(也 就是01那俩位)的取值范围在1-48范围内,如超出弹出msgbox提示,然后判断后中间两位(也就是12那俩位)的取值范围 在1-26范围内,超范提示,同样在判断最后两位(05),超范提示.问题描述如上,不知如何编写代码,请高手提示,谢谢 假如 text1.text 为你的字符输入筐 if mid(text1.text,1,2)48 or mid(text1.text,3,2)26 _ or mid(text1.text,5,2)26 then msbox "输入非法",16,"错误" '

浠水县19797964002: C#验证身份证号代码 -
邬芬复方: /// 验证身份证号码类 /// public class IDCardValidation {/// /// 验证身份证合理性 /// /// /// public bool CheckIDCard(string idNumber) { if (idNumber.Length == 18) { bool check = CheckIDCard18(idNumber); return check; } else if (idNumber.Length == ...

浠水县19797964002: 提示:该18位身份证号校验位不正确,您可以使用我们的15位升18位的小工具来验证,这是什么意思 -
邬芬复方: 15位变18位时,加了3个数字. 其中第7 8位是生日年份,最后一位是校验码 每个15位的身份证都有校验码,是验证身份证真伪用的

浠水县19797964002: 用C++写的程序判断身份证的真伪,当输入合法的身份证号时,输出"该身份证不合法".请问为什么?? -
邬芬复方: 输入身份证号码放到a里; 身份证校验码放到b里(校验码固定,搜百度百科“身份证”); 得到校验结果r,让r与身份畅棱扳谷殖咐帮栓爆兢证最后一位比较,如相等则合法;

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网