2017-04-03 10 views
0

ユーザーに8桁のバーコードを入力させようとしています。コードの長さが8桁でない場合は、エラーメッセージが表示されます。 8桁の長さの場合、エラーが発生します。なぜこのコードはインデント/構文エラーを生成する

def get_user_input(): 
    global total_price 
    """ get input from user """ 
while len(str(GTIN))!=8: 
    try: 
     GTIN = int(input("input your gtin-8 number:")) 
     if len(str(GTIN))!=8: 
      print("make sure the length of the barcode is 8") 
     else: 
      print("make sure you enter a valid number") 
     return GTIN 
+1

あなたが得る構文エラーは何ですか。エラー/スタックトレースを共有してください。 –

+0

この関数の後の次の行に、指定されていないインデントがあります – Yeas123

+2

貼り付けたとおりにインデントが正しいことを確認してください。なぜなら 'while'はメインの実行レベルにありますから、' get_user_input'関数。 – Ajean

答えて

0

あり、実際にいくつかのエラーは、ここで起こっ:

  1. あなたのインデントは、関数外にあるwhileループとして処理されていました。 PythonのWitespaceは重要です。
  2. tryステートメントごとに例外が必要です。
  3. さらに、GTINは最初は定義されていませんでした。

あなたの新しいコード:

def get_user_input(): 
    global total_price 
    """ get input from user """ 
    GTIN = "" 
    while True: 
     try: 
      GTIN = int(input("input your gtin-8 number:")) 
      if len(str(GTIN)) == 8: 
       break 
      else: 
       print("make sure the length of the barcode is 8") 
     except: 
      pass 
    return GTIN 
get_user_input() 
+0

UnboundLocalError:割り当て前に参照されるローカル変数 'GTIN' – Yeas123

+0

ただ更新しました。解決策としてマークすることができれば、多くの助けになります。 – Neil

+0

ありがとうございます、それは動作しますが、どうすればいいですか?入力が8未満の場合、エラーが表示されますが、コードを入力し直すだけでそのまま続きます。 – Yeas123

関連する問題