1. 程式人生 > 其它 >CAS Number 校驗碼驗證

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)

  這是自己寫的一個驗證方法,測試發現沒什麼問題