【问题标题】:Python: Calculating GTIN-8 Number, code works but sometimes returns negative barcode numbersPython:计算 GTIN-8 编号,代码有效,但有时返回负条形码编号
【发布时间】:2016-06-10 18:13:58
【问题描述】:

程序是从一个 8 位 GTIN8(条形码)号码中获取 7 位输入,将它们交替乘以 3 和 1,然后从和的最接近的 10 倍数中减去其和。

代码有效,但有时会从算法中返回负数,但不应该。

代码如下:

GTIN=(input("Enter a 7 digit GTIN number: "))
length=len(GTIN)
if(length==7):
  P1=int(GTIN[0])
P2=int(GTIN[1])
P3=int(GTIN[2])
P4=int(GTIN[3])
P5=int(GTIN[4])
P6=int(GTIN[5])
P7=int(GTIN[6])
GTINT=int(P1*3+P2+P3*3+P4+P5*3+P6+P7*3)
roundup=round(GTINT, -1)
GTIN8=int(roundup-GTINT)
print("Your full GTIN-8 code is: "+str(GTIN)+str(GTIN8))

当它起作用时会发生以下情况:

输入 7 位 GTIN 号码:9638507 您的完整 GTIN-8 代码是:96385074

如您所见,返回的数字不是负数。

当它不起作用时会发生以下情况:

输入 7 位 GTIN 号码:5701234 您的完整 GTIN-8 代码为:5701234-4

返回一个负数,它不应该这样做。任何想法为什么?

【问题讨论】:

  • Matey,您知道,在倒数第四行中,变量名称输入错误。你写的是 GTIN 而不是 GTIN。欢迎您:)

标签: python barcode


【解决方案1】:

UPC/GTIN 上的校验位算法可以产生负数,您应该使用MOD 10 将其转换为正数。更改您的最后一行:

GTIN8=int(roundup-GTINT)

GTIN8 = int(roundup - GTINT) % 10

【讨论】:

  • 非常感谢您的帮助!
猜你喜欢
  • 1970-01-01
  • 2022-07-09
  • 2017-01-11
  • 2014-12-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多