CAS Number 校验码验证

一个CAS编号以连字符“-”分为三部分,第一部分有2到7位数字,第二部分有2位数字,第三部分有1位数字作为校验码。

CAS编号以升序排列且没有任何内在含义。校验码的计算方法如下:CAS顺序号(第一、二部分数字)的最后一位乘以1,最后第二位乘以2,往前依此类推,然后再把所有的乘积相加,再把和除以10,其余数就是第三部分的校验码。

举例来说,水(H2O)的CAS编号前两部分是7732-18,则其校验码= ( 8×1 + 1×2 + 2×3 + 3×4 + 7×5 + 7×6 ) mod 10 = 105 mod 10 = 5(mod是求余运算符)

这是百科上的解释

怎么验证呢,比如给一个CAS号,如何验证是否是合格的呢?

def check_casnum(cas_str="5080-50-2"):
    # 最后一位校验码
    last_code = cas_str[-1]
    # 去掉校验码之后的数据
    check_code = cas_str[:-1].replace("-", "")
    # 计算长度
    length_code = len(check_code)
    # 结果集
    sum_data = 0
    for dd in check_code:
        sum_data += int(dd)*length_code
        # 计算一位递减
        length_code = length_code - 1
        # print(length_code)
    check_result = sum_data % 10
    print(last_code, check_result)
    print(str(check_result) == last_code)

  这是自己写的一个验证方法,测试发现没什么问题

原文地址:https://www.cnblogs.com/fly-kaka/p/15479152.html