美文网首页自动化测试程序员测试员的那点事
利用python随机生成手机号码和身份证号码

利用python随机生成手机号码和身份证号码

作者: 迈阿密小白 | 来源:发表于2017-09-07 20:27 被阅读297次

前提

最近在测客户相关内容,需要输入电话号码,想到之前在上一家单位写python+selenium脚本也需要输入手机号,也是用几行代码解决的,今天顺便总结一下,顺便试了随机生成身份证号码

1.生成手机号码

相对身份证,生成手机号码是比较简单的,核心思想是用到了 python  的random库,身份证相同的道理,先看代码

手机号码

先定义一个列表吧,里面把常用的三位数开头写进去,后8为从0-9中随机选8位

之前用的是  mobile = num1 + ''.join(random.choice("0123456789") for i in range(8))  这种方法,我看网上很多人也用这个方法;

这次写了第二个帮自己梳理了一下,多了好几行代码,不建议大家使用,还是使用第一种比较简洁方便

先定义一个空的列表,每次没选择一个数字都append到列表最后一位,完成后和一个空的str连接

一个随机的手机号码就这样生成了

2.生成身份证号码

相对手机号码,身份证就是多了地区码(这个可以从txt里面读取,所以不是大问题)、随机生成生日、三维随机码和一位权重码,所以只要高清原理也不是很困难

我将这部分代码分成了两部分:1.从文件读取地区码;2.随机生成生日、三位随机数和权重位

第一部分,读取地区码部分

读取地区码

将地区码文件放在一个路径下,读取后split一下,然后切片取出code,相对还是很容易理解的

第二部分,随机生成生日、随机数和权重位

这边要先了解一下,身份证最后一数是怎么产生的,有下面一个公式:

s = Sum(Ai * Wi), i = 0, … , 16 

last = s % 11

先对前17位数字的权求和

          Ai:表示第i位置上的身份证号码数字值(0~9)

          Wi:7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2 (表示第i位置上的加权因子)

然后根据last,去字典中查到对应的权重码

第一部分地区code已经反悔了一个列表,从列表里面随机获取一个

第二部分生日我分开来,先从1950-2000随机获取一年,月份和日期从当前日期随机往前推0-365天,这样就随机生成了年月日

第三部分三位随机数,我也是随机取得,最后一位权重码就按上面的公式

最后看一下实际效果

print效果

That's  all  

相关文章

网友评论

本文标题:利用python随机生成手机号码和身份证号码

本文链接:https://www.haomeiwen.com/subject/lscwjxtx.html