python3-嵌套的while循环驱动的用户输入菜单决策树

时间:2018-10-13 06:08:39

标签: python-3.x while-loop nested

我被这个问题困扰了太久了,我需要一些帮助。我试图创建一个用户输入菜单决策树,它将引导用户进行适当的函数调用。我似乎无法获取正确运行的路径。我一直陷在第二个循环中。我尝试了许多不同的逻辑和条件,但没有任何效果。我创建了一些简单的代码,我认为这些代码清楚地表明了我要实现的目标...

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 :(得分:1)

看起来您需要突破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()

答案 1 :(得分:0)

您正在将selection与整数进行比较。如果选择具有数据类型,它将永远为假。而是执行selection == type(3),这不会解决您的问题。

另一件事是,while循环的第一行

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

您正在比较(==),而不是赋值(=)。

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

使用单号等于符号。

您无法比较数字,因此您将无法获得所需的结果,所有数字的循环均相同。为此,您需要将数字存储在选择变量中。 要求进一步的查询。