时长:五十分钟
代码量:
8-4 【Python0036】中文级联菜单 分数 10 作者 doublebest 单位 石家庄铁道大学编写程序实现中文级联菜单,建议可以使用pypinyin或其它扩展库。
代码:
def display_menu(menu, level=0):标签:菜单,level,menu,choice,current,3.26,print From: https://www.cnblogs.com/szm123/p/18256819
"""递归显示菜单"""
for index, (key, value) in enumerate(menu.items(), start=1):
print(" " * level + f"{index}. {key}")
if isinstance(value, dict): # 如果值是字典,说明还有下一级菜单
display_menu(value, level + 1)
def get_choice(prompt="请选择: "):
"""获取用户选择"""
while True:
try:
choice = int(input(prompt))
return choice
except ValueError:
print("输入无效,请输入数字。")
def navigate_menu(menu):
"""导航菜单"""
while True:
display_menu(menu)
choice = get_choice()
current_level = menu
path = [] # 记录选择的路径
# 根据用户选择遍历菜单
for level in range(len(str(choice))):
digit = int(str(choice)[level]) - 1
if digit < len(current_level):
path.append(list(current_level.keys())[digit])
current_level = list(current_level.values())[digit]
else:
print("无效的选择。")
break
# 检查是否到达叶子节点
if not isinstance(current_level, dict):
print("你选择了:", " -> ".join(path))
print("操作完成或显示信息。") # 这里可以添加具体操作
break
# 示例菜单结构
menu = {
"一级菜单1": {
"二级菜单1-1": "这是二级菜单1-1的操作或信息",
"二级菜单1-2": {
"三级菜单1-2-1": "这是三级菜单1-2-1的操作或信息"
}
},
"一级菜单2": {
"二级菜单2-1": "这是二级菜单2-1的操作或信息"
}
}
navigate_menu(menu)