2017-09-23 1 views
0

이 프로그램이 있으며 각 메뉴 옵션을 실행하고 싶습니다. 기본적으로 사용자가 로그인하면 메뉴가 나타나고 하나를 누르면 작동합니다. 그러나 2를 누르면 '검색 학생이 정의되지 않았습니다'라는 메시지가 나옵니다. 그 내용에 대해 이해하지 못합니다. 프로그램에서 함수를 이동하려고 시도했지만, 그렇게하면 다른 오류가 발생합니다. 나는 이것을 구조화하는 올바른 방법을 찾고있다. 기능이 메뉴보다 먼저 나오나요? 로그인 후에? 그렇다면 어떻게해야합니까?NameError : name ''이 (가) 정의되지 않았습니다.

choice = input 
def PrintMenu(): 
    print("\n*******************") 
    print("\n School menu system") 
    print("\n*******************") 
    print(" [1] Add Student") 
    print(" [2] Search Student") 
    print(" [3] Find Report") 
    print(" [4] Exit") 
    choice = input ("Enter a choice: ") 
#while choice =='': 
    if choice == '1': 
     AddStudent() 
    elif choice == '2': 
     SearchStudent(ID) 
    elif choice == '3': 
     FindReport() 
    elif choice == '4': 
     print("\nExiting the system......\n") 
     sys.exit(0) 
    else: 
      print ("\n not valid choice") 
PrintMenu() 
def SearchStudent(ID): 
    with open("Students.txt", 'r') as file: 
     for i in file: 
      data = i.rstrip().split(",") 
      if data[0] == ID: 
       return "The student you require is: {} {}".format(data[2], data[1]) 
    return "No matches found" 
search = input("Please enter a student ID: ") 
print(SearchStudent(search)) 

답변

0

주 기능 전에 SearchStudent (ID)를 배치해야합니다. 파이썬에서 함수 (예 : 함수)는 으로 정의한 후으로 호출해야합니다.

주요 섹션은 사용하려는 기능을 따라야합니다. 귀하의 로그인 기능이 주 기능이 되어야만 프로그램이이를 알리도록해야합니다. 코드의 끝 부분이 추가

if __name__== "__main__": 
    yourMainFunction() 

귀하의 코드는 대부분 다음과 같이 표시됩니다 코드의 주요 부분이 있지만이거나가 필요가있는 경우

def FindReport(args): 
    #What it's going to do 

def SearchStudent(args): 
    #What it's going to do 

def AddStudent(args): 
    #What it's going to do 

def PrintMenu(): 
    #What it's going to do 

def Login(): 
    #Your main function 

if __name__ == "__main__": 
    Login() 
+0

이해가 안 가기. 메뉴 이전에 로그인 기능이 있고 addstudent 기능이 있는데 메뉴 전후에 입력을 시도했지만 여전히 같은 오류가 발생합니다. – CV9

+0

@ cᴏʟᴅsᴘᴇᴇᴅ 어떤 아이디어가 있습니까? 또는 제안? – CV9

+0

추가 도움으로 답변을 업데이트했습니다. –

관련 문제