Python新手求助:为多级菜单添加返回上一级功能
四级菜单带返回上一级的Python实现方案
问题描述
我是Python新手,写了一个四级选择菜单脚本,想在第2、3、4级菜单里加返回上一级的选项。试过用while循环和函数实现,但要么卡在当前菜单循环、要么重复执行整个脚本、要么选完第一级就退出程序,网上没找到合适的解决办法,想学习正确的实现方式。
现有代码:
print("\nPlease select an action:") print("\n1. Run") print("\n2. Swim") user_input1 = input("\nPlease make your selection: ") if user_input1 == "1": user_selected_action = "run" elif user_input1 == "2": user_selected_action = "swim" else: print("Invalid option selected. Run script again.") exit() print("\nPlease select an environment:") print("\n1. Outdoors") print("\n2. In a Gym") user_input2 = input("\nPlease make your selection: ") if user_input2 == "1": user_selected_cluster = 'Outdoors' elif user_input2 == "2": user_selected_cluster = 'Gym' else: print("Invalid option selected. Run script again.") exit() print("\nPlease select an day:") print("\n1. Saturday") print("\n2. Sunday") user_input3 = input("\nPlease make your selection: ") if user_input3 == "1": user_selected_action = "Sat" elif user_input3 == "2": user_selected_action = "Sun" else: print("Invalid option selected. Run script again.") exit() print("\nPlease select a time of day:") print("\n1. Day") print("\n2. Night") user_input4 = input("\nPlease make your selection: ") if user_input4 == "1": user_selected_cluster = 'AM' elif user_input4 == "2": user_selected_cluster = 'PM' else: print("Invalid option selected. Run script again.") exit()
解决方案
核心思路是用函数封装每个层级的菜单,通过循环接收用户输入,遇到返回指令时结束当前函数回到上一层,遇到有效选项则进入下一层菜单。每个子菜单添加0. 返回上一级选项,主菜单增加退出选项。
优化后的代码:
def show_main_menu(): while True: print("\n=== 主菜单 ===") print("1. 跑步") print("2. 游泳") print("3. 退出程序") choice = input("请输入选择:") if choice == "1": show_environment_menu("跑步") elif choice == "2": show_environment_menu("游泳") elif choice == "3": print("程序退出") break else: print("无效选项,请重新输入") def show_environment_menu(action): while True: print(f"\n=== {action} - 环境选择 ===") print("1. 户外") print("2. 健身房") print("0. 返回主菜单") choice = input("请输入选择:") if choice == "1": show_day_menu(action, "户外") elif choice == "2": show_day_menu(action, "健身房") elif choice == "0": return # 回到上一层菜单 else: print("无效选项,请重新输入") def show_day_menu(action, environment): while True: print(f"\n=== {action} - {environment} - 日期选择 ===") print("1. 周六") print("2. 周日") print("0. 返回上一级") choice = input("请输入选择:") if choice == "1": show_time_menu(action, environment, "周六") elif choice == "2": show_time_menu(action, environment, "周日") elif choice == "0": return else: print("无效选项,请重新输入") def show_time_menu(action, environment, day): while True: print(f"\n=== {action} - {environment} - {day} - 时段选择 ===") print("1. 白天") print("2. 晚上") print("0. 返回上一级") choice = input("请输入选择:") if choice == "1": print(f"\n已确认:{action} - {environment} - {day} - 白天") # 可在此添加后续逻辑,比如保存选择、执行对应操作 elif choice == "2": print(f"\n已确认:{action} - {environment} - {day} - 晚上") # 可在此添加后续逻辑 elif choice == "0": return else: print("无效选项,请重新输入") # 启动主菜单 if __name__ == "__main__": show_main_menu()
关键说明
- 每个菜单用独立函数实现,函数内部通过
while True循环保持菜单显示,直到用户选择返回或退出。 - 用
return语句结束当前函数,自然回到调用它的上一层菜单循环,实现返回功能。 - 传递当前层级的选择参数(如运动类型、环境)到下一层菜单,保持上下文连贯。
- 移除原代码中直接
exit()的逻辑,改用循环提示重新输入,提升用户体验。
内容的提问来源于stack exchange,提问作者Kelevra
相关产品推荐
相关产品推荐

