2017-03-05 6 views
1

コンピューティングクラスで、GTIN-8バーコードを生成して検証するPythonプログラムを開発するタスクを設定しました。しかし、私の先生は非常に貧しく、何か手がかりがないので、クラスで助けを求めるのは本当に有効な選択肢ではありません。さらに、この割り当てを設定する前に、私のクラスはPythonの経験がほとんどなく、現在はPythonの初心者の定義です。 バーコードの生成と検証

def mainmenu(): 
    print("1. Generate a barcode") 
    print("2. Validate a barcode") 
    print("3. Quit") #prints out 3 options for the user to select 
    while True: #loops over and over again 
     try: #handles exceptions 
      selection=int(input("Enter choice: ")) #tells user to enter a choice 
      if selection==1: 
       generate() #calls the function 
       break #terminates the loop 
      elif selection==2: 
       validate() 
       break 
      elif selection==3: 
       break 
      else: 
       print("Invalid choice. Enter 1-3") 
       mainmenu() 
     except ValueError: #if user enters a string, it will loop back 
        print("Invalid choice. Enter 1-3") 
    exit 

def generate(): 
    print("You have chosen to generate a barcode") 
    D1 = int(input("Please enter the first digit")) 
    D2 = int(input("Please enter the second digit")) 
    D3 = int(input("Please enter the third digit")) 
    D4 = int(input("Please enter the fourth digit")) 
    D5 = int(input("Please enter the fifth digit")) 
    D6 = int(input("Please enter the sixth digit")) 
    D7 = int(input("Please enter the seventh digit")) 
    timestogether = int('D1') * 3 
    print (timestogether) 
    anykey=input("Enter anything to return to main menu") 
    mainmenu() 


def validate(): 
    print("You have chosen to validate a barcode") 
    anykey=input("Enter anything to return to main menu") 
    mainmenu() 

# recalls the main menu 
mainmenu() 

はこれまでのところ、私は彼らが生成したり、バーコードを検証するかどうかをユーザーに尋ねるメニューを開発している:とにかく、ここで私がこれまで持っているすべてのコードです。しかし、私は本当に次に何をすべきかはわかりません。ユーザがバーコードを生成したい場合、プログラムはユーザに7桁の数字を入力するよう要求しなければならず、次に7桁の数字を1より3だけ順番に掛けなければならない。次に合計を得るために結果を加算しなければならない。それは、10の最も近い等しいかより高い倍数から合計を引く必要があります。最後に、結果は8桁目(チェックデジット)になるので、プログラムは最後のバーコードを出力する必要があります。

ユーザーがバーコードを検証したい場合、プログラムはユーザーに8桁のコードを入力するように要求する必要があります。次に、3つのものと1つのものを用いて上記のように乗算処理を繰り返す必要があります。計算された数値をすべて加算し、結果が10の倍数であればバーコードが有効で、GTIN-8が有効であることを示すメッセージをユーザーに出力する必要があります。ただし、10の倍数でない場合、バーコードは無効で、エラーが出力されます。

とにかく、これを読んでいただきありがとうございました。ご協力いただければ幸いです。ここで

答えて

0

はあなたのgeneratevalidate機能を解決する:

def generate(arg=''): 
    GTIN = arg 
    if arg == '': 
     GTIN=(input("Enter a 7 digit GTIN number: ")) 
    if(len(GTIN)==7): 
     G1=int(GTIN[0]) 
     G2=int(GTIN[1]) 
     G3=int(GTIN[2]) 
     G4=int(GTIN[3]) 
     G5=int(GTIN[4]) 
     G6=int(GTIN[5]) 
     G7=int(GTIN[6]) 
     GTINT=int(G1*3+G2+G3*3+G4+G5*3+G6+G7*3) 
     roundup=round(GTINT, -1) 
     GTIN8 = int(roundup - GTINT) % 10 
     if arg == '': 
      print(arg) 
      print("Your full GTIN-8 code is: "+str(GTIN)+str(GTIN8)) 
     return GTIN8 
    else: 
     print("Nope") 

def validate(): 
    GTIN=(input("Enter an 8 digit GTIN number: ")) 
    GTIN8 = generate(GTIN[0:7]) 
    if str(GTIN8) == GTIN[7]: 
     print("Your code is valid") 
    else: 
     print("Your code is invalid") 

validate機能は、単に第八番号を作成するためにgenerate関数を使用して、生成された第八数が渡された第八番号と一致するかどうかをチェックします。クレイモアの答えに加えて

2

、メインメニューのユーザ入力は、whileループの中で次のようになります。

def mainmenu(): 
    while True: #loops over and over again 
     print("1. Generate a barcode") 
     print("2. Validate a barcode") 
     print("3. Quit") # prints out 3 options for the user to select 
     selection=int(input("Enter choice: ")) #tells user to enter a choice 
     if selection==1: 
      generate() #calls the function 
     elif selection==2: 
      validate() 
     elif selection==3: 
      break 
     else: 
      print("Invalid choice. Enter 1-3") 

この方法では、時に生成し、機能のリターンを検証し、それは毎回メインメニューを再表示します。また、あなた自身の関数を再帰的に呼び出すという問題にぶつからない。

オンラインで見つけたコードをコピー/貼り付けすることはお勧めしません。あなたはそれから何も学ばないでしょう。本当にあなたに提供された答えとその働きを理解していることを確認してください。何かを稼働させることは、それがなぜ機能するのかを理解することと同じではありません。

関連する問題