Спасибо всем, я нашел ошибку. Тост-сообщения должны быть внутри потока пользовательского интерфейса или обработчика. Поскольку у меня было несколько из них в потоке, отличном от UI, он начал генерировать исключение.
Сначала добавьте одну дополнительную строку в функцию menu_choice (): ## Отредактировано ##
def menu():
print("Hi! What to you want to do? 1. Withdrawal 2. Change PIN")
def execute(choice):
if choice == 1:
print("1")
elif choice == 2:
print("2")
elif choice == 3:
print("3")
elif choice == 4:
print("4")
elif choice == 5:
print("5")
elif choice == 6:
print("6")
return 1
return 0
def menu_choice():
menu()
choice = int(input("Choose a number!"))
should_the_loop_break = execute(choice)
return should_the_loop_break
Вы можете вызвать метод menu_choice () двумя способами:
1) Бесконечный цикл: ## Отредактировано ##
while True:
should_the_loop_break = menu_choice()
if should_the_loop_break == 1:
break
2) Указанный номер.
for i in range(0,n):
menu_choice()
Дайте мне знать, если это работает / дает ошибку!
PS: Пожалуйста, игнорируйте орфографические ошибки с именами переменных.
Я бы лучше перестроил код, как показано ниже:
#Returns a number if input is valid and None otherwise
def get_choice():
try:
return int(input("choose a number! "))
except ValueError:
return None
def execute(choice):
print("execute %i" % choice)
def main():
while True:
choice = get_choice()
if choice is None: #make sure input is valid
continue. #ask again
if choice != 6:
execute(choice)
else:
break #choice == 6
main()
Main реализован в виде цикла while. Он проверяет правильность ввода перед выполнением целевой функции. Он снова спрашивает пользователя, является ли ввод недействительным. Он работает до тех пор, пока выбор не равен 6.
Если вы хотите выполнить бесконечную рекурсию своих команд, выполните:
while True: # while needs a condition that is True. True is obviously True. 1 < 2 would be True as well, 2 < 1 not.
menu_choice()
Используйте break
внутри цикла, если вы хотите выйти из этого цикла.
Если вы хотите выполнить команду n
раз, чем:
for i in range(n):
menu_choice()
где i
содержит номер текущего цикла.