CAS Number 校驗碼驗證
阿新 • • 發佈:2021-10-29
一個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)
這是自己寫的一個驗證方法,測試發現沒什麼問題