Создание простого меню в цикле для вызова функций, застрявшего на том, почему оно не будет работать

#python #if-statement #while-loop #menu #user-defined-functions

Вопрос:

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

 def mainmenu():  print("Hello! Welcome to The Sprint Project Company! Please choose from 1-5: ")  print("1. Simple IPO Program")  print("2. IFs and Loop sample")  print("3. Strings and dates")  print("4. Data files and Default Values")  print("5. Quit")   while True:  choice = input("Enter choice (1-5): ")  if choice == 1:  ipo()  elif choice == 2:  ifloop()  elif choice == 3:  stringsdates()  elif choice == 4:  datafiles()  else:  break  mainmenu()  

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

Комментарии:

1. Вам нужно будет исправить отступ в коде, чтобы блок while стал частью mainmenu функции.

Ответ №1:

В вашем коде есть два пункта. Сначала функция «input()» возвращает строку, следовательно, вы сравниваете СТРОКУ с ЦЕЛЫМ ЧИСЛОМ, затем она принимает значение False. Это похоже на то, что вы сравниваете 1 с «1», и они не одно и то же.

Во-вторых, ваша функция mainmenu() должна быть помещена в цикл. Внесите эти два изменения, и это сработает.

 while True:  mainmenu() # Add the function here.  choice = int(input("Enter choice (1-5): ")) # Change here  if choice == 1:  

Комментарии:

1. Большое вам спасибо! Это сработало отлично, вы спасли наш проект 🙂