EAN13碼是商品條碼中最常用的一種,由13位數字組成,其中最後一位為校驗碼。該校驗碼是由前12位數字計算得出的,並用於驗證EAN13碼是否有效。本文將從生成EAN13碼校驗碼以及驗證EAN13碼是否正確兩個方面進行詳細闡述。
一、生成EAN13碼校驗碼
在生成EAN13碼時,我們需要先輸入前12位數字,然後計算出校驗碼,將其加到這12位數字後面即可生成EAN13碼。
計算校驗碼的方法如下:
def calculate_ean13_checksum(digits: str) -> str: """ Calculate EAN-13 check digit based on the first 12 digits. """ assert len(digits) == 12, "EAN-13 must be 12 digits long" factors = [1, 3] * 6 checksum = sum(int(digits[i]) * factors[i] for i in range(12)) return str((10 - checksum % 10) % 10)
上面的代碼中,calculate_ean13_checksum函數接收一個12位數字的字符串作為參數,返回其計算出的校驗碼。
計算校驗碼的方法是將前12位數字中的奇數位和偶數位分別相加,得到兩個數,再將奇數位的和乘以3後加上偶數位的和,得到一個總和。最後,用10減去該總和對10取餘數,所得的結果即為校驗碼。
二、驗證EAN13碼是否正確
如果要驗證EAN13碼是否正確,我們需要先確認其校驗碼是否與前12位數字計算得出的校驗碼相等。如果相等,則可以認為該EAN13碼是有效的。
驗證EAN13碼的方法如下:
def validate_ean13(code: str) -> bool: """ Validate EAN-13 code. """ assert len(code) == 13, "EAN-13 must be 13 digits long" return code[-1] == calculate_ean13_checksum(code[:-1])
validate_ean13函數接收一個13位數字的字符串作為參數,返回一個布爾值,表示該EAN13碼是否有效。
該函數通過調用calculate_ean13_checksum函數計算出前12位數字的校驗碼,然後將該校驗碼與傳入的EAN13碼的最後一位進行比較,如果相等,則說明該EAN13碼是有效的。否則,可能是輸入的EAN13碼有誤,也可能是輸入的校驗碼有誤。
三、總結
本文從生成EAN13碼校驗碼以及驗證EAN13碼是否正確兩個方面進行了詳細闡述。在實際應用中,我們可以使用上面提到的兩個函數來方便地生成和驗證EAN13碼。通過本文的介紹,相信大家對EAN13碼的校驗碼計算和驗證有了更深入的理解。
原創文章,作者:NAGEG,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/374686.html