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)