python3 - вложенный в то время как управляемое циклом дерево решений меню ввода пользователя - PullRequest
0 голосов
/ 13 октября 2018

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

def menu():
    print("1. Selection 1")
    print("2. Selection 2")
    print("3. Quit")

def menu1():
    print("1.Selection Function 1")
    print("2.Selection Function 2")
    print("3.Quit")

def menu2():
    print("1.Selection Function 3")
    print("2.Selection Funtion 4")
    print("3.Quit")

def func_1():
    print("Funtion_1")

def func_2():
    print("Funtion_2")

def func_3():
    print("Funtion_3")

def func_4():
    print("Funtion_4")

if __name__ == '__main__':
   menu()

selection=int
selection1=int
selection2=int

while (selection != 3):
   selection==int(input("Please Select a Menu Option: ")) 
   if selection == 1:
       menu1()
       while ((selection1 != 3)):
           selection1==int(input("What Type of funtion Would You Like To execute: ")) 
           if selection1 == 1:
               func_1()
           if selection1 == 2:
               func_2()
           if selection1 == 3:
               sys.exit()
   elif selection == 2:
       menu2()
       while ((selection2==int(input("What Other Type of Function Would You Like To execute: ")) != 3)):
           if selection2 == 1:
               func_3()
           if selection2 == 2:
               func_4()
           if selection2 == 3:
               sys.exit()

   elif selection == 6:
       sys.exit()

Ответы [ 2 ]

0 голосов
/ 13 октября 2018

Вы сравниваете selection с целым числом.Где выбор имеет тип данных, он будет ложным навсегда.Вместо этого сделайте это selection == type(3), и это не решит вашу проблему.

Еще одна вещь: первая строка в цикле while

selection==int(input("Please Select a Menu Option: ")) 

здесь вы сравниваете (==), а не присваиваете значение (=).

selection=int(input("Please Select a Menu Option: "))

использовать одинарные равные символу.

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

0 голосов
/ 13 октября 2018

Похоже, вам нужно вырваться из цикла while вместо выполнения sys.exit() во внутренних циклах.Если вы выполните sys.exit() на внутренних циклах, он выйдет и не вернется к опции внешнего меню.

ваша строка selection==int(input("Please Select a Menu Option: ")) должна быть selection=int(input("Please Select a Menu Option: ")).== используется для сравнения, а не для назначения.для присвоения мы используем =

Здесь измененный код, который работает, как и ожидалось.

def menu():
    print("1. Selection 1")
    print("2. Selection 2")
    print("3. Quit")

def menu1():
    print("1.Selection Function 1")
    print("2.Selection Function 2")
    print("3.Quit")

def menu2():
    print("1.Selection Function 3")
    print("2.Selection Funtion 4")
    print("3.Quit")

def func_1():
    print("Funtion_1")

def func_2():
    print("Funtion_2")

def func_3():
    print("Funtion_3")

def func_4():
    print("Funtion_4")

if __name__ == '__main__':
   menu()

selection=int
selection1=int
selection2=int

while (selection != 3):
   selection=int(input("Please Select a Menu Option: "))
   if selection == 1:
       menu1()
       while ((selection1 != 3)):
           selection1=int(input("What Type of funtion Would You Like To execute: "))
           if selection1 == 1:
               func_1()
           if selection1 == 2:
               func_2()
           if selection1 == 3:
               break
   elif selection == 2:
       menu2()
       while (selection2 != 3):
           selection2=int(input("What Other Type of Function Would You Like To execute: "))
           if selection2 == 1:
               func_3()
           if selection2 == 2:
               func_4()
           if selection2 == 3:
               break

   elif selection == 6:
       sys.exit()
...