Python 验证8位GTIN条码

Python 验证8位GTIN条码,python,Python,因此,我需要编写一个程序,为用户提供两个选项:a)验证GTIN代码或B)从7 GTIN代码中查找8位GTIN代码。要从7位GTIN代码中找出GTIN代码的第8位,必须按如下顺序乘以7位GTIN代码中的每个数字 然后从50中减去总和,得到第8位数字。 然而,每当我按下B或B键而不是显示我想要的结果时,我都会在gtin中显示“for I: 名称错误:未定义名称“gtin” 这是密码 question = input("Would you like to A)Validate your code o

因此,我需要编写一个程序,为用户提供两个选项:a)验证GTIN代码或B)从7 GTIN代码中查找8位GTIN代码。要从7位GTIN代码中找出GTIN代码的第8位,必须按如下顺序乘以7位GTIN代码中的每个数字

然后从50中减去总和,得到第8位数字。 然而,每当我按下B或B键而不是显示我想要的结果时,我都会在gtin中显示“for I: 名称错误:未定义名称“gtin” 这是密码

question = input("Would you like to A)Validate your code or B) Find the 8th digit?")
if question in "Aa":
    barcode = input("Please enter your 8 digit number")
counter = 0
sum = 0
for i in barcode:
    counter = counter + 1
    if counter % 2 != 0:
        sum = sum + int(i) * 3
    else:
        sum = sum + int(i) * 1  
if sum % 10 == 0:
    print("Valid GTIN")
else:
    print("Invalid GTIN")

if question in "Bb":
    gtin = input("Enter your 7 digit number")
for i in gtin:
    counter = counter + 1
    if counter % 2 != 0:
        sum = sum + int(i) * 3
    else:
        sum = sum + int(i) * 1

print(sum)
lastdigit = 50 - sum
print("8th digit ", lastdigit)

print("Full 7 digit number ", gtin)
print("Full 8 digit number ", str(gtin+str(lastdigit)) )
此外,当我按下A或A时,它会给出我想要的结果,但也会显示消息“对于gtin中的I: 名称错误:未定义名称“gtin”


我不希望显示此消息

它会中断,因为它不知道条形码是什么,因为它没有设置为任何值,因为它在等待用户输入他们没有选择的选项时被阻止

试试这个:

question = input("Hellp, would you like to A) Validate you barcode or B)Find out the 8th digit number?")
if question in "Bb":
    # do B stuff
elif question in "Aa":
    # do A stuff

“不行”有点笼统。到底发生了什么?你需要分享你得到的结果,这样我们才能帮助确定发生了什么。此外,根据您问题中的格式,您可能需要阅读python缩进规则。您的代码无效:输入
1111111
产生
8位47
。。。47不是一个数字<代码>1111111 47根据您的代码同样“有效”。您的验证器缺少GTIN验证的步骤。你需要重新检查一下你的规格。此外,最令人困惑的是,您的
a/b
选项与提示符所述内容相反。@TheAwsome and gives
1111111 5
为什么不在代码开头处理所有输入?这将使它更容易阅读。