Итак, я пытаюсь сделать так, чтобы после завершения функции Settings() программа вернулась к началу функции Menu() , как если бы программа обнаружила ошибку. Я старался:
def Menu(): Clear() print(«Hello, world!») print(«n1. Settings») print(«2. Exit») Choice = input(«n>») try: type(int(Choice)) except Exception as e: print(«Oh no!n I`ve encountered an error!» + e) Menu() if Choice == 1: Settings() if Choice == 2: exit(0) def Settings(): Menu()
Но он просто возвращается туда, откуда был вызван, и не возвращается к началу.
Кто-нибудь может мне с этим помочь?
Я как бы новичок в Python, так что извините, если я сделал что-то не так.
Tresquel 15 Ноя 2020 в 02:30
4 ответа
Лучший ответ
Используйте цикл while и строковый метод .isdigit() , чтобы проверить, ввел ли пользователь число. Кроме того, вы также должны проверить, является ли выбор допустимым вариантом меню.
Примечание: не забудьте привести choice к int, иначе ваши условные выражения не будут выполняться.
Решаю простые задачки на Python с сайта Codewars
def Menu(): while True: Clear() print(‘Hello, world!n’) print(‘1. Settings’) print(‘2. Exit’) choice = input(‘> ‘) if choice.isdigit() and int(choice) in : choice = int(choice) break else: print(«Please enter 1 or 2») input(‘press enter to continue. ‘) if choice == 1: Settings() if choice == 2: exit(0)
Если вы уже проверили, что вводимые пользователем данные являются допустимым вариантом, и превратили его в int, вы можете использовать такой словарь:
switch =
А затем вы можете заменить операторы if в своем меню следующим образом:
def Menu(): while True: Clear() print(‘Hello, world!n’) print(‘1. Settings’) print(‘2. Exit’) choice = input(‘> ‘) if choice.isdigit() and int(choice) in : choice = int(choice) break else: print(«Please enter 1 or 2») input(‘press enter to continue. ‘) switch[choice]()
Kato 15 Ноя 2020 в 00:07
Тип Choice — str , поэтому он не может правильно сравнивать, и сравнение всегда не выполняется, приведите значение к типу int с помощью Choice = int(Choice)
def Menu(): Clear() print(«Hello, world!») print(«n1. Settings») print(«2. Exit») Choice = input(«n>») try: Choice = (int(Choice)) except Exception as e: print(«Oh no!n I`ve encountered an error!» + e) Menu() if Choice == 1: Settings() if Choice == 2: exit(0) def Settings(): Menu()
Vaibhav D. Aren 15 Ноя 2020 в 11:25
Просто просто зацикливайте Menu () навсегда:
def Menu(): Clear() print(«Hello, world!») print(«n1. Settings») print(«2. Exit») Choice = input(«n>») try: type(int(Choice)) except Exception as e: print(«Oh no!n I`ve encountered an error!» + e) if Choice == 1: Settings() if Choice == 2: exit(0) def Settings(): pass # do the settings stuff while True: Menu()
Kevin Kreps 14 Ноя 2020 в 23:38
Choice = (int(Choice))
Переменная Choice имеет строковый тип, поэтому вам нужно преобразовать строку типа в int.
Как работает return в Python / Как работает return в Питоне
Источник: question-it.com
Как вернуться к началу программы — Python
Я написал калькулятор ИМТ на Python 3.4, и в конце я хотел бы спросить, хочет ли пользователь снова использовать калькулятор, и если да, вернитесь к началу кода. У меня это пока есть. Любая помощь приветствуется 🙂
Оберните весь код в цикл:
отступ каждой второй строки на 4 символа.
Всякий раз, когда вы хотите «перезапустить с начала», используйте оператор
Каждый раз, когда вы хотите прервать цикл и продолжить после него, используйте
Если вы хотите завершить всю программу, введите в начале вашего кода (перед — бесполезно повторять ! -) и всякий раз, когда вы хотите завершить программу, используйте
Вам просто нужно вызвать функцию, если пользователь хочет начать заново:
Источник: ru.fluffyfables.com
Как я могу заставить мою программу вернуться к началу в Python?
Я действительно новый программист, просто программируя для удовольствия. Обычно я пишу свои программы с циклами while, чтобы в разное время перейти к разным разделам программы. Это, вероятно, не самый лучший способ, но все это я знаю, как это сделать. Например, я работаю над небольшой программой, которая запускается в оболочке, предназначенной для решения уравнения. Здесь часть программы, которая должна вернуть вас к началу.
while loop==4: goagain = raw_input(«Would you like to do the equation again? (Y/N)») if goagain == «Y»: #Get values again loop=2 elif goagain == «N»: print «Bye!» #End program loop=0 else: print»Sorry, that wasn’t Y or N. Try again.»
У меня он установлен так, что while loop == 2 он получает значения, которые нужно ввести в уравнение, а while loop == 0 ничего не происходит. Однако проблема заключается в том, что когда мой цикл меняется на 2, программа заканчивается там.
Он не хочет возвращаться в код, где я сказал ему, что делать while loop == 2. Итак, мне нужно знать, как вернуть мою программу обратно в этот раздел. Должен ли я использовать другой метод, чем циклы while? Или есть способ вернуть мою программу в этот раздел? Спасибо!
user1247096 03 март 2012, в 18:53
Источник: overcoder.net