2017-04-03 1 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 루프로 처리되고 있었다. 파이썬의 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

관련 문제