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

如何实现支持选项选中/取消选中状态切换的Python菜单?

带选中状态切换的Python菜单实现

需求

我想要创建一个带编号选项的Python菜单,实现以下功能:

  • 选中某选项时,该选项旁显示X标记已选中
  • 再次选中同一选项时,X消失,代表取消选中

原代码问题分析

你提供的测试代码存在几个关键问题:

  • print()函数返回值为None,将其赋值给变量后再打印只会输出None,无法实现菜单状态的更新
  • 没有跟踪选项的选中状态,无法实现“选中/取消”的切换逻辑
  • 未定义advancedGenerationTrue()函数,运行会触发报错
  • 菜单显示逻辑混乱,缺乏统一的状态刷新机制

修正后的实现代码

# 初始化菜单选项的选中状态:键为选项编号,值为布尔值(True=选中,False=未选中)
menu_states = {
    1: False,
    2: False
}

def print_menu():
    """根据当前状态打印菜单"""
    print(f"1. Normal Character Generator({'X' if menu_states[1] else ''})")
    print(f"2. Advanced Appearance Generator({'X' if menu_states[2] else ''})")

while True:
    # 每次循环先打印最新状态的菜单
    print_menu()
    try:
        selection = int(input("\n请选择菜单选项:\n"))
        
        if selection in menu_states:
            # 切换选中状态:选中变未选中,未选中变选中
            menu_states[selection] = not menu_states[selection]
        else:
            print("无效选项,请输入菜单编号")
            
        # 询问是否继续操作
        continue_choice = input("是否继续操作?(yes/no) ").lower()
        if continue_choice == "no":
            break
            
    except ValueError:
        print("无效输入,请输入数字编号")

代码说明

  • 用menu_states字典统一管理所有选项的选中状态,便于修改和读取
  • print_menu()函数负责动态生成菜单内容,通过三元表达式判断是否显示X
  • 选中选项时,通过not操作符直接切换对应状态,实现点击切换效果
  • 每次循环开始都重新打印菜单,确保界面始终显示最新的选中状态

内容的提问来源于stack exchange,提问作者Keenonthedaywalk

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 19:31:03