zoukankan      html  css  js  c++  java
  • 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)
    

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

  • 相关阅读:
    [ 随手记 4 ]C/C++ 模板(Template)使用/重载区别
    [ 随手记 3 ] 堆区/栈区/堆栈/队列
    [ 随手记 2 ] C/C++ 数组/指针/传数组到函数/指针数组/数组指针
    柯西方程的另外一种解法
    十分强大的CC抛物线定理(数学)
    模板_BIT
    模板_SEG_TREE
    模板_SPLAY
    模板_LCA
    NOIP游(GUNCU)记
  • 原文地址:https://www.cnblogs.com/fly-kaka/p/15479152.html
Copyright © 2011-2022 走看看