带菜单功能的Python主函数循环不起作用?

时间:2017-11-20 18:19:00

标签: python function loops menu main

我目前是一名参加蟒蛇课的大学生。我们的任务是用函数创建这个程序。 main函数调用菜单,然后我们在main函数中编写一个循环,根据菜单函数中的用户响应访问其他函数。

我似乎无法让我的循环工作。当我选择菜单选项时没有任何反应。现在,我只有print语句来测试函数的调用。我想在编写函数之前确保它有效。

如果有人有一个循环应该是什么样子来调用函数的例子,它会对我有所帮助。

def GetChoice():
    #Function to present the user menu and get their choice

    #local variables
    UserChoice = str()

    #Display menu and get choice
    print()
    print("Select one of the options listed below:  ")
    print("\tP\t==\tPrint Data")
    print("\tA\t==\tGet Averages")
    print("\tAZ\t==\tAverage Per Zone")
    print("\tAL\t==\tAbove Levels by Zone")
    print("\tBL\t==\tBelow Levels")
    print("\tQ\t==\tQuit")
    print()
    UserChoice = input("Enter choice:  ")
    print()
    UserChoice = UserChoice.upper()

    return UserChoice

def PrintData():
    print("test, test, test")

def AverageLevels():
    print("test, test, test")

def AveragePerZone():
    print("test, test, test")

def AboveLevels():
    print("test, test, test")

def BelowLevels():
    print("test, test, test")

def main():
    Choice = str()

    #call GetChoice function

    GetChoice()

    #Loop until user quits

    if Choice == 'P':
        PrintData()
    elif Choice == 'A':
        AverageLevels()
    elif Choice == 'AZ':
        AveragePerZone()
    elif Choice == 'AL':
        AboveLevels()
    elif Choice == 'BL':
        BelowLevels()


main()

3 个答案:

答案 0 :(得分:3)

循环应该从以下开始:

while True:
    Choice = GetChoice()

菜单的if条件应遵循相同的缩进。

如果要添加退出程序的选项,请添加另一个elif语句,如下所示:

elif Choice == "Q":
    break

这将退出循环,从而结束程序。

(请原谅许多编辑 - 使用移动设备)

答案 1 :(得分:1)

您需要像这样分配Choice变量,

Choice =  GetChoice()

另外,请注意您也可以删除此行,

UserChoice = str()

在python中,您不需要显式指定变量类型。

最后,另一个小建议是将Choice.upper()与代码底部的值进行比较。这样,如果有人进入' p'它仍会调用PrintData()

答案 2 :(得分:0)

您需要将GetChoice()函数的返回值赋给名称Choice:

Choice = GetChoice()