以下是我对vin规则理解之后自己编写的生成vin码的代码 分享

import random

def generate_vin():
    characters = "0123456789ABCDEFGHJKLMNPRSTUVWXYZ"
    weights = [8, 7, 6, 5, 4, 3, 2, 10, 0, 9, 8, 7, 6, 5, 4, 3, 2]

    vin = ""

    for i in range(17):
        char = random.choice(characters)
        vin += char

    # 把生成的字符串含有字母的全部转换成对应的数字
    translation_table = str.maketrans('ABCDEFGHJKLMNPRSTUVWXYZ', '12345678123457923456789')
    # 要替换的字符串
    text = vin
    # 使用 translate() 方法进行替换
    result = text.translate(translation_table)
    # 把返回的支付穿转化成列表
    lis1 = list(result)
    # 把列表中的字符串类型转化成整数型
    weights_int = [int(x) for x in lis1]

    # 把个列表的字分别进行相乘求和
    summed = list(map(lambda x, y: x * y, weights_int, weights))
    summ1 = sum(list(summed)) % 11
    # 判断当余数等于10的时使用“x”替代
    if summ1 == 10:
        summ1 = 'X'
    # 在第九位插入余数
    result = text[:8] + str(summ1) + text[9:]

    return result


# 生成 10 条 VIN 码
vin_list = []
for _ in range(10):
    vin = generate_vin()
    vin_list.append(vin)
# 打印生成的 10 条 VIN 码
for vin in vin_list:
    print(vin)

以下是我使用该代码批量生成的vin码

posted on 2025-02-12 10:14  泛旧的背包  阅读(391)  评论(0)    收藏  举报