2017-03-07 57 views
0

所以我需要編寫一個程序給用戶兩個選項:A)驗證GTIN代碼或B)從7個GTIN代碼中查找8位GTIN代碼。要從7位GTIN代碼中找出GTIN代碼的第8位數字,必須按照這樣的順序將7位GTIN代碼中的每個數字相乘 enter image description here 然後從50中減去總和以獲得第8位數字。 「沒有定義名稱‘GTIN’的GTIN爲我: NameError」 這裏是代碼驗證8位GTIN條形碼

不過,我努力使代碼,每當我按的或b而不是顯示我想要的結果則顯示乙
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或它給了我我想要的結果,但也顯示消息「因爲我在GTIN: NameError:名字‘GTIN’沒有定義」 enter image description here 我不希望此消息被顯示

+2

「不工作」 是有點一般。究竟會發生什麼? – stybl

+2

您需要分享您獲得的結果,以便我們幫助確定發生的事情。另外,根據您問題中的格式,您可能需要閱讀python縮進規則。 – cdkMoose

+0

您的代碼無效:輸入'1111111'產生'第8位數字47' ... 47不是數字。根據你的代碼,'111111147'同樣是「有效的」。您的驗證器缺少GTIN驗證步驟。你需要再次查看你的規格。另外,最容易混淆的是,你的'a/b'選項與提示所說的相反。 – TemporalWolf

回答

0

它打破了,因爲它不知道條碼是什麼,因爲它沒有b een被設置爲任何東西,因爲它被阻止等待用戶輸入他們沒有選擇的選項。

試試這個:

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