Использование функции внутри функции — Python

Мне просто было интересно, может ли кто-нибудь помочь мне с этой проблемой. В настоящее время я разрабатываю программу подсчета очков для турнира колледжа в рамках моего школьного проекта.

Прямо сейчас у меня есть главное меню в одном файле .py, но у меня есть функция регистрации студента в другом файле .py. До сих пор мне удавалось вызывать функцию в программе главного меню и работать так, как я ожидал. Однако одна вещь, которую я испытал, заключалась в том, что функция просто зацикливалась без остановок и не останавливалась.

Из-за этого я вызвал функцию главного меню в конце функции регистрации студента. Это работает, поскольку позволяет вам зарегистрировать ученика (чье имя затем добавляется в текстовый файл), а затем отправляет вас обратно в главное меню, чтобы пользователь мог выбрать другое действие.

Если я затем попытаюсь снова ввести 1, он выдаст длинный список трассировки и, наконец, ошибку:

ModuleNotFoundError: No module named 'Function_1_reg_student.py';
    'Function_1_reg_student' is not a package.

Как мне заставить мою программу позволить мне зарегистрировать студента, возможно, спросить пользователя, хотят ли они зарегистрировать другого студента или вернуться в главное меню, если пользователь говорит «нет»?

Прошу прощения, если это не имеет смысла, я очень новичок в этом, и мне довольно сложно объяснить мою ситуацию и то, что я хотел бы сделать!

Ниже оба моих файла:

Главное_меню.py:

def main_menu():
    print(""" Welcome to the main menu.              
    |  (1.)     Register a student|                      
    |  (2.)     Score a student   |                                         
    |  (3.)     Leaderboard       |                                             
    |  (4.)     Quit              |
    """)

    while True:
        answer=input("Please enter a number between 1-4: ")
        if answer=="1":
            from Function_1_reg_student.py import reg_solo
            continue
        elif answer=="2":
            print ("Call function 2")
            continue
        elif answer=="3":
            print ("Call function 3")
            continue
        elif answer=="4":
            print ("Quit")
            continue
        else:
            print("ERROR MESSAGE: Please enter in a number from 1 to 4")
            continue

main_menu()

Функция

ModuleNotFoundError: No module named 'Function_1_reg_student.py';
    'Function_1_reg_student' is not a package.
reg_student.py:

def reg_solo():
   while True:
      studentname=input("Please enter student name ")
      studentsurname=input("Please enter surname ")
      print("Name: "+studentname+" "+studentsurname)
      text_file=open("solo_students_reg.txt","a")


text_file.write(studentname+":"+studentsurname+":"+"0"+":"+studentname[:3]+    studentsurname[:3]+":"+"\n")
      text_file.close()
      print(studentname+" "+studentsurname+" has been registered")
      from MAIN_MENU.py import main_menu
reg_solo()

person Emma Keysell    schedule 01.12.2018    source источник


Ответы (1)


Не включайте расширение файла при импорте модуля или из модуля.

Сделай это:

from Function_1_reg_student import reg_solo

Не это:

from Function_1_reg_student.py import reg_solo
person Cyphase    schedule 01.12.2018