欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

python 随机生成 ID 号 - 掘金

最编程 2024-05-05 07:30:11
...
import random import time # 随机生成一个地区码 def get_random_region_code(): region_code_list = ['110000', '120000', '130000', '140000', '150000', '210000', '220000', '230000', '310000', '320000', '330000', '340000', '350000', '360000', '370000', '410000', '420000', '430000', '440000', '450000', '460000', '500000', '510000', '520000', '530000', '540000', '610000', '620000', '630000', '640000', '650000'] return random.choice(region_code_list) # 随机生成一个生日,格式为YYYYMMDD def get_random_birthday(): # 生成从1970年到现在的秒数 start = time.mktime((1970, 1, 1, 0, 0, 0, 0, 0, 0)) end = time.time() # 生成一个从1970年到现在的随机秒数 rand_sec = random.randint(start, end) # 将随机秒数转换为时间元组 time_tuple = time.localtime(rand_sec) # 将时间元组格式化为YYYYMMDD的日期字符串 return time.strftime('%Y%m%d', time_tuple) # 随机生成一个顺序码,顺序码为三位数字,不足三位用0填充 def get_random_sequence_code(): sequence_code = str(random.randint(0, 999)) return sequence_code.zfill(3) # 生成身份证号 def generate_id_number(): region_code = get_random_region_code() birthday = get_random_birthday() sequence_code = get_random_sequence_code() id_number = region_code + birthday + sequence_code # 计算身份证号的最后一位校验码 id_list = [int(i) for i in id_number] id_weight = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2] id_sum = sum([a*b for a, b in zip(id_list, id_weight)]) id_mod = id_sum % 11 check_code_list = ['1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2'] check_code = check_code_list[id_mod] id_number += check_code return id_number # 测试生成身份证号的函数 if __name__ == '__main__': id_number = generate_id_number() print(id_number)