在 python 中打印菜单

printing a menu in python

我被要求创建一个商店的原始版本并创建一个菜单来帮助管理该商店。 问题是在菜单中的每个选项之后我应该重新打印菜单并且如果用户没有给出有效选项打印消息“不支持的操作”,但由于某种原因即使操作也会打印消息有效(程序正确执行任务但每次仍打印消息)

def main():
    store = dict()
    file = open("store.txt", 'r')  # dont forget to change it so sys.argv[1]
    create_store(store, file)
    print_menu()
    user_choice = input()
    while True:
        if user_choice == '0':
            file.close()
            return
        if user_choice == '1':
            query_by_category(store)
        if user_choice == '2':
            return
        if user_choice == '3':
            return
        if user_choice == '4':
            return
        else:
            print("Error: unrecognized operation.")
        print_menu()
        user_choice = input()

问题是您使用的不是一个 if-else 块,而是 5 个不同的块:

改变

if user_choice == '0':
    file.close()
    return
if user_choice == '1':
    query_by_category(store)
if user_choice == '2':
    return
if user_choice == '3':
    return
if user_choice == '4':
    return
else:
    print("Error: unrecognized operation.")

至:

if user_choice == '0':
    file.close()
    return
elif user_choice == '1':
    query_by_category(store)
elif user_choice == '2':
    return
elif user_choice == '3':
    return
elif user_choice == '4':
    return
else:
    print("Error: unrecognized operation.")

您调用了 print_menu() 两次,因此尝试通过调用它来启动 while 语句,而不是这个冗余操作,这样您可以删除 2 行代码。您还使用空的 return 语句,这实际上是不需要的。即将到来的代码的占位符是“pass”。

def main():
    store = dict()
    file = open("store.txt", 'r')  # dont forget to change it so sys.argv[1]
    create_store(store, file)
    while True:
        print_menu()
        user_choice = input()
        if user_choice == '0':
            file.close()
        elif user_choice == '1':
            query_by_category(store)
        elif user_choice == '2':
            pass
        elif user_choice == '3':
            pass
        elif user_choice == '4':
            pass
        else:
            print("Error: unrecognized operation.")