python分析人口出生率代码_身份证号码各位数字的含义以及计算校验位的python代码...

公民身份号码是特征组合码,由十七位数字本体码和一位校验码组成。排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码和一位数字校验码。

其中前六位是地址码,通过百度百科我们很容易就可以知道它们每一位的具体含义和某一地区的地址码到底是多少,我在此就不再赘述了。

第七到第十四位是出生日期码,这个很简单,比如我写这段话的日期可以记作:20210128

身份证号码的第十五到十七位是顺序码,表示在同一地址码所标识的区域范围内,对同年、月、日出生的人员编定的顺序号。其中第十七位奇数分给男性,偶数分给女性。我将对这个顺序码进行较为详细的说明。

在这三位顺序码中,第15和16位这两位表示所在地的派出所代码。在前六位地址码中已经具体到县级行政区了,而县公安局会有几个派出所分别负责这个县的不同乡镇,15和16位就是相应的派出所的代码,我知道我们乡的派出所的代码,但是不知道如何方便准确的查询任意一个派出所的代码的方法,如果你知道的话可以告诉我。第17位是真正意义上的“顺序码”,在这个派出所的管辖范围内同一天生日的人,男性按照进行出生登记的先后顺序会被依次标记为1,3,5,7,9。女性按照进行出生登记的先后顺序会被依次标记为2,4,6,8,0。

第18位是校验码,这一位的数字是根据前17位的数字按照ISO7064:1983.MOD11-2算法计算得出的。具体的计算方法如下:

1、将前面的身份证号码17位数分别乘以不同的系数。从第一位到第十七位的系数分别为:7-9-10-5-8-4-2-1-6-3-7-9-10-5-8-4-2。

2、将这17位数字和系数相乘的结果相加。

3、用加出来和除以11,看余数是多少?

4、余数只可能有0-1-2-3-4-5-6-7-8-9-10这11个数字。其分别对应的最后一位身份证的号码为1-0-X -9-8-7-6-5-4-3-2。(即余数0对应1,余数1对应0,余数2对应X...)

其中的X为大写,代表的是罗马数字10。在写代码时,上面第四步的对应关系可以表示为:(12 - 余数)mod 11,当结果为10时用“X”表示,结果为其它数字时则直接保留。

以下是根据前17位计算第18位校验位数字的python代码,由此也很容易衍生出判断一个18位的数字字符串是否符合身份证号的校验规则的python代码。

一、输入前17位数字计算第18位检验位的python代码:64443d8186da77d1c70c7ac67f62275c.png计算校验位的函数的一种写法

79cd02aa0815fd4421c84a4007e19e55.png上图的运行结果

二、写一个python代码,从键盘输入一个身份证号,输出它是否符合校验规则1825434033afc9b47ad9529d8ba37bc7.png仅供参考

注意上面的代码没有进行输入检测,身份证号前17位只能是数字,第18位只能是数字或‘X’,如果输入的参数不合适很可能会出错。

应该指出的是,一个符合身份证号校验规则的号码未必就是真的。是否真的有这个地区代码?是否真的有这个日期?是否真的有这个代号的派出所?是否真的有这么多的人出生?一个真实存在的身份证号和一个真实存在的人真就是对应的吗?

假如有一个乡镇人口为5万,中国现在的人口出生率大约为千分之十,那么这个乡镇每年的出生人口约为500人,平均每天只有约1.37人。也就是说这个乡镇平均每天出生约0.7个男孩,0.7个女孩。所以只要一个乡镇的人口不是很多,则这个乡镇的身份证号的第17位是1或2的概率很大,越往后的概率就越小。如果这个编号经常排到很大甚至不够用了,则说明这个行政区的管辖范围过大,应该进行拆分。(我个人是这样理解的,具体情况我也不太清楚,如果本文有错误欢迎指出。)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
92讲视频课+16大项目实战+课件源码  为什么学习数据分析?       人工智能、大数据时代有什么技能是可以运用在各种行业的?数据分析就是。      从海量数据中获得别人看不见的信息,创业者可以通过数据分析来优化产品,营销人员可以通过数据分析改进营销策略,产品经理可以通过数据分析洞察用户习惯,金融从业者可以通过数据分析规避投资风险,程序员可以通过数据分析进一步挖掘出数据价值,它和编程一样,本质上也是一个工具,通过数据来对现实事物进行分析和识别的能力。不管你从事什么行业,掌握了数据分析能力,往往在其岗位上更有竞争力。   本课程共包含五大模块: 一、先导篇: 通过分析数据分析师的一天,让学员了解全面了解成为一个数据分析师的所有必修功法,对数据分析师不在迷惑。  二、基础篇: 围绕Python基础语法介绍、数据预处理、数据可视化以及数据分析与挖掘......这些核心技能模块展开,帮助你快速而全面的掌握和了解成为一个数据分析师的所有必修功法。 三、数据采集篇: 通过网络爬虫实战解决数据分析的必经之路:数据从何来的问题,讲解常见的爬虫套路并利用三大实战帮助学员扎实数据采集能力,避免没有数据可分析的尴尬。  四、分析工具篇: 讲解数据分析避不开的科学计算库Numpy、数据分析工具Pandas及常见可视化工具Matplotlib。  五、算法篇: 算法是数据分析的精华,课程精选10大算法,包括分类、聚类、预测3大类型,每个算法都从原理和案例两个角度学习,让你不仅能用起来,了解原理,还能知道为什么这么做。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值