zoukankan      html  css  js  c++  java
  • 创建身份证号

     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,'')
  • 相关阅读:
    项目计划进度控制与资源管理
    读大道至简所思
    Java自学第三十二天
    Java自学第三十一天
    Java自学第三十天
    Java自学第二十九天
    Java自学第二十八天
    Java自学第二十七天
    Java自学第二十六天
    Java自学第二十五天
  • 原文地址:https://www.cnblogs.com/xuelei-0728/p/11386235.html
Copyright © 2011-2022 走看看