13位商品条形码最后一位校验码计算

#!/usr/bin/python
# -*- coding: UTF-8 -*-
def CheckCode(barcode):
    """
    :param barcode: 商品条码的前十二位
    :return: 商品条码的最后一位校验码
    step1:位置序号不包括校验码在内,由右至左顺序排号
    step2:从位置序号1开始,所有奇数位的数字求和
    step3:将step2的和乘以3
    step4:从位置序号2开始,所有偶数位的数字求和
    step5:将step3和step4的结果相加
    step6:用大于或等于step5所得结果且为10最小整数倍的数减去step5所得结果,其差即为最后一位校验码的值
    """
    if len(barcode) != 12:
        print("Error,请输入商品条码的前12位")
    s1 = 3 * (int(barcode[11])+int(barcode[9])+int(barcode[7])+int(barcode[5])+int(barcode[3])+int(barcode[1]))
    print(s1)
    s2 = int(barcode[10])+int(barcode[8])+int(barcode[6])+int(barcode[4])+int(barcode[2])+int(barcode[0])
    print(s2)
    sum = s1+s2
    if (sum % 10) == 0:
        result = sum
        print(result)
    else:
        result = ((int(sum/10))+1)*10
        print(result)
    print(result-sum)
    return result-sum


if __name__ == '__main__':
    """
    商品条形码由13位数字组成,697352417001X,最后一位校验码X的计算算法
    """
    CheckCode("697352417001")
posted @ 2020-08-20 18:18  向前一步~  阅读(2857)  评论(0编辑  收藏  举报