我需要我的程序来检查一个推杆变量(e_gtin),然后从中计算GTIN(将1,3,5和7的数字乘以3然后再加上7个数字并除以最接近的10倍表格)到目前为止,它将数字加倍并将它们加起来但我不知道从哪里开始就使它成为十的倍数
另外我最终使用了这段代码
calculator = int(e_gtin[0])*3+int(e_gtin[1])+\
int(e_gtin[2])*3+int(e_gtin[3])+\
int(e_gtin[4])*3+int(e_gtin[5])+\
int(e_gtin[6])*3
rounding = round(calculator+4)
加号4是变量将始终向上舍入而不是向下舍入(GTIN计算指定了这一点)
e_gtin是输入的7位GTIN码。
谢谢你去了---> https://stackoverflow.com/users/906693/roadrunner66
答案 0 :(得分:0)
您可能会询问计算GTIN8号码的校验位。这里给出了解释http://www.gs1.org/how-calculate-check-digit-manually
e = input("Enter a 7 digit number - ")
# note: an integer number can not be accessed like a string or list,
# make it a string first
e=str(e)
sum= int(e[0])*3+int(e[1])+\
int(e[2])*3+int(e[3])+\
int(e[4])*3+int(e[5])+\
int(e[6])*3
checkdigit = 9 - (sum-1) % 10
print sum,checkdigit
要了解模运算符的工作原理,只需使用它,自己做一个表等。
import numpy as np
sums=np.array([50,51,52,53,54,55,56,57,58,59,60,61])
print sums
print sums % 10
print 10 - sums % 10 # all results right except for 10s which should be zeros
print 10 - (sums-1) % 10 -1
输出:
[50 51 52 53 54 55 56 57 58 59 60 61]
[0 1 2 3 4 5 6 7 8 9 0 1]
[10 9 8 7 6 5 4 3 2 1 10 9]
[0 9 8 7 6 5 4 3 2 1 0 9]