创建身份证号

 1 #!/usr/bin/python3
 2 import random
 3 
 4 # 从"身份证地址对照表.txt"读取地址码和对应的地址,保存为字典
 5 def createIDaddress(file):
 6     D = []
 7     for line in open(file):
 8         if not line[5] == '0':
 9             D.append(line[0:6])
10     return (D)
11 
12 # 随机生日码
13 def createBrithday(sYear=1979,eYear=2009):
14     year = random.randint(sYear,eYear)
15     month = random.randint(1,12)
16     day = random.randint(1,28)
17     berthday = str(year).zfill(4)+str(month).zfill(2)+str(day).zfill(2)
18     return (berthday)
19 
20 # 随机顺序码 1:男 2:女
21 def createRandomCode(numMax = 999,sex = ''):
22     code = random.randint(100,numMax)
23     if sex == '':
24         if code % 2 == 1:
25             # print('性别:男,code{}'.format(code))
26             return code
27         else:
28             # print('性别:男,code{}'.format(code+1))
29             return code+1
30     elif sex == '':
31         if code % 2 == 0:
32             # print('性别:女,code{}'.format(code))
33             return code
34         else:
35             # print('性别:女,code{}'.format(code+1))
36             return code + 1
37     else:
38         return "输入错误:(男:1 女:2)"
39 
40 # 计算校验码
41 def checkCode(number):
42     S = \
43         int(number[0]) * 7 + \
44         int(number[1]) * 9 + \
45         int(number[2]) * 10 + \
46         int(number[3]) * 5 + \
47         int(number[4]) * 8 + \
48         int(number[5]) * 4 + \
49         int(number[6]) * 2 + \
50         int(number[7]) * 1 + \
51         int(number[8]) * 6 + \
52         int(number[9]) * 3 + \
53         int(number[10]) * 7 + \
54         int(number[11]) * 9 + \
55         int(number[12]) * 10 + \
56         int(number[13]) * 5 + \
57         int(number[14]) * 8 + \
58         int(number[15]) * 4 + \
59         int(number[16]) * 2
60     mod = S % 11
61     mod_dist = {0:'1', 1:'0', 2:'X', 3:'9', 4:'8', 5:'7', 6:'6', 7:'5', 8:'4', 9:'3', 10:'2'}
62     checkMod = mod_dist[mod]
63     return checkMod
64 
65 # 生成二代身份证 参数1:要生成的数量 参数2:男:1 女:2
66 def idNumber(shuliang = 1,sex = ''):
67     filePath = '/Users/zhaodi/PycharmProjects/python3/学习/自动化测试脚本/txt文档/身份证号地址对照表.txt'
68     idAdd = createIDaddress(filePath)
69 
70     L = []  #生成空列表,存放生成的号码
71     while shuliang > 0:
72         addCode = random.choice(idAdd)          # 随机地址码
73         brithady = createBrithday(1949,2009)            #随机生日
74         randomCode = createRandomCode(999,sex)     #随机code码
75         number = str(addCode) + str(brithady) + str(randomCode)  #17位数字
76         cCode = checkCode(number)   #检查码
77 
78         # 合成身份证号
79         id_Card = number + cCode
80         print("身份证号:{}".format(id_Card))
81         L.append(id_Card)
82         shuliang = shuliang - 1
83     return L
84 
85 idNumber(1,'')

 

posted @ 2019-08-20 23:09  Daniel_yan_0728  阅读(1343)  评论(0编辑  收藏  举报