Nov-29-2017, 11:04 PM
def mainmenu(): #Defining mainmenu as a function so it can be called in future if need be.
while True:
print(" MAIN MENU")
print("1. Find the check digit of a barcode")
print("2. Validate a barcode")
print("3. Quit") # prints out 3 options for the user to select
selection=input("Enter choice: ") #tells user to enter a choice
if selection=='1':
find() #calls the function and performs the chosen task.
elif selection=='2':
validate() #calls the function and performs the chosen task.
elif selection=='3':
print("See you in future!")
exit()
else:
print("Invalid choice. Enter 1-3")
mainmenu()
#Stops the user from entering irrelevant info so the program doesnt fall over.
def find(arg=''):
#Defining find as a function with the abillity to have a parameter run through it, this is critical for the validate function.
GTIN = arg
if arg == '':
#Starts the find function only if there no parameter being through it, which there isnt in this case.
GTIN=(input("Enter a 7 digit GTIN number: "))
if(len(GTIN)==7):
a=(int(GTIN[0])) #Odd position gets multiplied by three.
b=(int(GTIN[1])) #Even Position does not change.
c=(int(GTIN[2]))
d=(int(GTIN[3]))
e=(int(GTIN[4]))
f=(int(GTIN[5]))
g=(int(GTIN[6]))
#The seven digit barcode is split into seven individual integers which makes it possible to find the check digit.
GTINT=int(a*3+b+c*3+d+e*3+f+g*3)
#The math for the find check digit function, this is why we split the Barcode into seven numbers.
roundup=round(GTINT, -1)
#Using the roundup function to round GTINT (GTIN total).
GTIN8 = int(roundup - GTINT) % 10
if arg =='':
print(arg)
print("Your full GTIN-8 code is: "+str(GTIN)+str(GTIN8))
#Prints the original seven digits (GTIN) with the added GTIN 8 (check digit) added on the end.
return GTIN8
else:
print("Sorry, that's invalid!")
print(" ")
print("1. Yes")
print("2. No")
retry=int(input("Would you like to try again?:"))
#The program enquires the user to see if they'd like to try again.
if retry ==1:
mainmenu()
#If they do, they get taken back to the main menu.
elif retry ==2:
print("Okay! goodbye!")
exit()
#If they dont, they're given a goodbye and we use the integrated exit function to kill the program.
else:
print("Wrong Input!")
mainmenu()
#This stops the user from entering invalid values causing the program to fall apart.
def validate():
#Defining validate as a function with closed parameter functionallity.
GTIN=(input("Enter an 8 digit GTIN number: "))
GTIN8 = find(GTIN[0:7])
#Checks the whole barcode through the GTIN parameter in the find function for the eighth value.
if str(GTIN8) == GTIN[7]:
#It checks the last value of the entered value and compares it to the checked value to see if they match.
print("Your code is valid")
#And if they do match, the program says it's valid.
print(" ")
print("1. Yes")
print("2. No")
retry=int(input("Would you like to try again?: "))
#The program enquires the user to see if they'd like to try again.
if retry ==1:
mainmenu()
#If they do, they get taken back to the main menu.
elif retry ==2:
print("Okay! goodbye!")
exit()
#If they dont, they're given a goodbye and we use the integrated exit function to kill the program.
else:
print("Wrong Input!")
validate()
#This stops the user from entering invalid values causing the program to fall apart.
else:
print("Your code is invalid!")
mainmenu()
#This tells the user the barcode they entered is invalid, taking them to the main menu.
mainmenu()
#Calling the main menu.Error:Traceback (most recent call last):
File "C:\Users\xxx\Downloads\GTIN-899 (1).py", line 138, in <module>
mainmenu()
File "C:\Users\xxx\Downloads\GTIN-899 (1).py", line 21, in mainmenu
mainmenu()
File "C:\Users\xxx\Downloads\GTIN-899 (1).py", line 13, in mainmenu
find() # calls the function and performs the chosen task.
File "C:\Users\xxx\Downloads\GTIN-899 (1).py", line 43, in find
g = int(GTIN[6])
ValueError: invalid literal for int() with base 10: 'p'Right, first post. most definitely wont be my last knowing my noobiness. Anyways, I need help, I have been slaving over this code for hours and I just cannot get it to work properly, my issue here is the find function not returning an error message when I enter "123456p" as my 7 digit code, it should say that it is a wrong code? its linked to the if statement or is it not? I experimented with some stuff and ended up with another piece of broken code. def mainmenu(): #Defining mainmenu as a function so it can be called in future if need be.
while True:
print(" MAIN MENU")
print("1. Find the check digit of a barcode")
print("2. Validate a barcode")
print("3. Quit") # prints out 3 options for the user to select
selection=input("Enter choice: ") #tells user to enter a choice
if selection=='1':
find() #calls the function and performs the chosen task.
elif selection=='2':
validate() #calls the function and performs the chosen task.
elif selection=='3':
print("See you in future!")
exit()
else:
print("Invalid choice. Enter 1-3")
mainmenu()
#Stops the user from entering irrelevant info so the program doesnt fall over.
def find(arg=''):
#Defining find as a function with the abillity to have a parameter run through it, this is critical for the validate function.
GTIN = arg
if arg == '':
#Starts the find function only if there no parameter being through it, which there isnt in this case.
try:
GTIN=input("Enter a 7 digit GTIN number: ")
if(len(GTIN)==7):
a=int(GTIN[0:1]) #Odd position gets multiplied by three.
b=int(GTIN[1:2]) #Even Position does not change.
c=int(GTIN[2:3])
d=int(GTIN[3:4])
e=int(GTIN[4:5])
f=int(GTIN[5:6])
g=int(GTIN[6:7])
except ValueError:
print('Please enter an integer value.')
#The try except is used to prevent the user from entering values that would otherwise cause the program to fall apart.
#The seven digit barcode is split into seven individual integers which makes it possible to find the check digit.
GTINT=int(a*3+b+c*3+d+e*3+f+g*3)
#The math for the find check digit function, this is why we split the Barcode into seven numbers.
roundup=round(GTINT, -1)
#Using the roundup function to round GTINT (GTIN total).
GTIN8 = int(roundup - GTINT) % 10
if arg =='':
print(arg)
print("Your full GTIN-8 code is: "+str(GTIN)+str(GTIN8))
#Prints the original seven digits (GTIN) with the added GTIN 8 (check digit) added on the end.
return GTIN8
else:
print("Sorry, that's invalid!")
print(" ")
print("1. Yes")
print("2. No")
retry=int(input("Would you like to try again?:"))
#The program enquires the user to see if they'd like to try again.
if retry ==1:
mainmenu()
#If they do, they get taken back to the main menu.
elif retry ==2:
print("Okay! goodbye!")
exit()
#If they dont, they're given a goodbye and we use the integrated exit function to kill the program.
else:
print("Wrong Input!")
mainmenu()
#This stops the user from entering invalid values causing the program to fall apart.
def validate():
#Defining validate as a function with closed parameter functionallity.
GTIN=(input("Enter an 8 digit GTIN number: "))
GTIN8 = find(GTIN[0:7])
#Checks the whole barcode through the GTIN parameter in the find function for the eighth value.
if str(GTIN8) == GTIN[7]:
#It checks the last value of the entered value and compares it to the checked value to see if they match.
print("Your code is valid")
#And if they do match, the program says it's valid.
print(" ")
print("1. Yes")
print("2. No")
retry=int(input("Would you like to try again?: "))
#The program enquires the user to see if they'd like to try again.
if retry ==1:
mainmenu()
#If they do, they get taken back to the main menu.
elif retry ==2:
print("Okay! goodbye!")
exit()
#If they dont, they're given a goodbye and we use the integrated exit function to kill the program.
else:
print("Wrong Input!")
validate()
#This stops the user from entering invalid values causing the program to fall apart.
else:
print("Your code is invalid!")
mainmenu()
#This tells the user the barcode they entered is invalid, taking them to the main menu.
mainmenu()
#Calling the main menu.And ended up with this error:Error:Traceback (most recent call last):
File "C:\Users\xxx\Downloads\GTIN-8999.py", line 98, in <module>
mainmenu()
File "C:\Users\xxx\Downloads\GTIN-8999.py", line 9, in mainmenu
find() #calls the function and performs the chosen task.
File "C:\Users\xxx\Downloads\GTIN-8999.py", line 39, in find
GTINT=int(a*3+b+c*3+d+e*3+f+g*3)
UnboundLocalError: local variable 'g' referenced before assignmentI understand if im not worth your time, any help is good help, thanks!
