今天一个朋友和我聊天说到,昨天去百度面试高级测试工程师。

面试过程中,有被问到Python相关知识。

也提了一个Python相关的问题。

用Python实现随机生成大于18以上的身份证号码

很遗憾他没有做出来。但是至少也是一次不错的面试经验。

上午我就自己动手试了试。

首先百度了下身份证生成规则。下面大家来一起看一下:

公民身份号码是由17位数字码和1位校验码组成。排列顺序从左至右分别为:6位地址码,8位出生日期码,3位顺序码和1位校验码。

地址码(身份证地址码对照表见下面附录)和出生日期码很好理解,顺序码表示在同一地址码所标识的区域范围内,对同年同月同日出生的人编定的顺序号,顺序码的奇数分配给男性,偶数分配给女性。

身份证最后一位校验码算法如下:

将身份证号码前17位数分别乘以不同的系数身份证号随机,从第1位到第17位的系数分别为:7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2

将得到的17个乘积相加。

王者怎么解绑实名认证身份号_100个可用的实名认证身份号_身份证号随机

将相加后的和除以11并得到余数。

余数可能为0 1 2 3 4 5 6 7 8 9 10这些个数字,其对应的身份证最后一位校验码为1 0 X 9 8 7 6 5 4 3 2。

身份证号码解密|身份证尾数校验码算法|ID card information

身份证地址码对照表。

以下代码都是在Python3环境下运行,用Python2的请自行修改再运行。

身份证号随机_100个可用的实名认证身份号_王者怎么解绑实名认证身份号

运行环境:Python3,运行使用的到库:requests,bs4,random,time

这个网站有点过分了,没登录不让复制身份证号随机,我就直接暴力点,把它爬下来了。

import requests

不过大家不要太认真。(我还是比较菜的)

下面是身份证生成代码。

问题:

1:前6位为随便复制了一点地区代码加到列表里面去随机取。

2:年份直接从1948年开始(百度介绍说身份证是从1948年开始实施的,虽然当时好像是15位吧),结束年份为当前本地时间减去18,这样就避免生成的身份证号码上年龄小于18周岁

3:日期我没有去考虑每月的日期长度(例如2月份没有30,31号),我直接以1-31

4:后面四位我没有按照规则去生成。

PS:有兴趣的可以完善下,让生成的更加符合规律。

import randomimport timedef regiun():

关注公众号,“Python语言”,回复“python”即可获取python学习视频

为大家提供与Python相关的最新技术和资讯。

限 时 特 惠: 本站每日持续更新海量各大内部创业教程,加站长微信免费获取积分,会员只需38元,全站资源免费下载 点击查看详情
站 长 微 信: thumbxmw