美文网首页
vin验证码计算

vin验证码计算

作者: 印随2018 | 来源:发表于2017-01-03 23:42 被阅读34次

    直接上代码,python版本。
    参考: https://en.wikipedia.org/wiki/Vehicle_identification_number

    def check_sum(vincode):
        """
        checkout length, word and checksum
        """
        maps = "0123456789X"
        weights = [
            8, 7, 6, 5, 4, 3, 2, 10, 0, 9, 8, 7, 6, 5, 4, 3, 2
        ]
        table = {
            "0": 0, "1": 1, "2": 2, "3": 3, "4": 4, "5": 5, "6": 6, "7": 7, "8": 8, "9": 9,
            "A": 1, "B": 2, "C": 3, "D": 4, "E": 5, "F": 6, "G": 7, "H": 8,
            "J": 1, "K": 2, "L": 3, "M": 4, "N": 5, "P": 7, "R": 9,
            "S": 2, "T": 3, "U": 4, "V": 5, "W": 6, "X": 7, "Y": 8, "Z": 9,
        }
    
        if not isinstance(vincode, str) and not isinstance(vincode, unicode):
            return False
    
        if len(vincode) != 17:
            return False
    
        vincode = vincode.upper()
        if "I" in vincode or "O" in vincode or "Q" in vincode:
            return False
    
        total = 0
        for index, value in enumerate(vincode):
            try:
                products = table[value] * weights[index]
            except KeyError:
                break
            total = total + products
    
        index = total%11
    
        return maps[index] == vincode[8]
    

    相关文章

      网友评论

          本文标题:vin验证码计算

          本文链接:https://www.haomeiwen.com/subject/gltovttx.html