You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 10:50:24