国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

Python模擬三級菜單效果

2020-01-04 16:43:08
字體:
來源:轉載
供稿:網友

本文實例為大家分享了Python模擬三級菜單效果的具體代碼,供大家參考,具體內容如下

1.功能簡介

此程序模擬多級菜單操作,實現按菜單項對應數字索引進入下級菜單,按b鍵回退到上一級菜單,按q鍵退出菜單。并用一個簡化的學科專業目錄進行了三級菜單測試,實際上此程序可適用任意多級菜單操作。 

2.實現方法

本程序采用python語言編寫,為了高效實現菜單操作,減少循環次數,關鍵定義了如下三個變量:

current_menu_dict:非最低級菜單時為一個嵌套字典,在最低級菜單時為一個列表,存放當前級及后續各級菜單。
upper_menu_list:一個列表,存放比當前級更高級別的所有菜單嵌套字典的列表,最后一個元素比current_menu_dict多一層父菜單。
temp_menu:一個列表,只存放當前級的菜單,即為current_menu_dict的鍵值。

菜單操作過程:

(1)按數字鍵進入對應的下級菜單:數字鍵是temp_menu的索引,根據索引提取當前菜單項,即為current_menu_dict的一個鍵值,據此current_menu_dict可重新指向該鍵值對應的下一級菜單嵌套字典,不過在進入下級菜單之前,upper_menu_list.append(current_menu_dict)先把當前菜單嵌套字典添加為upper_menu_list的最后一個元素,為回退做準備。
(2)按b鍵回退到上一級菜單:回退時current_menu_dict=upper_menu_list.pop()獲取上一級菜單嵌套字典,實現回退。
(3)按q鍵退出菜單:按q鍵時調用exit()退出程序。

簡例示意:假設三級菜單字典為{一級菜單:{二級菜單:三級菜單}},如果當前菜單在第二級,此時
current_menu_dict={二級菜單:三級菜單}
upper_menu_list=[{一級菜單:{二級菜單:三級菜單}}]
temp_menu=[二級菜單]

3.流程圖

Python,三級菜單,菜單

4.代碼

# Author:Byron Limenu_data={ '文學':  {   '中國語言文學':['語言學及應用語言學','漢語言文字學','中國古代文學','中國現當代文學'],   '外國語言文學':['英語語言文學','亞非語言文學','阿拉伯語語言文學','外國語言學及應用語言學'],   '新聞傳播學': ['新聞學', '傳播學'],   '藝術學': ['音樂學', '美術學','戲劇戲曲學','電影學','舞蹈學']  }, '理學':  {   '數學':['基礎數學','計算數學','概率論與數理統計','應用數學','運籌學與控制論'],   '物理學':['理論物理','粒子物理與原子核物理','原子與分子物理','等離子體物理','無線電物理'],   '化學': ['無機化學','分析化學','有機化學','物理化學','高分子化學與物理'],   '生物學': ['植物學', '動物學','生理學','微生物學','遺傳學'],   '地球物理學': ['固體地球物理學', '空間物理學']  }, '工學':  {   '機械工程':['機械制造及其自動化','機械電子工程','機械設計及理論','車輛工程'],   '電氣工程':['電力系統及其自動化','高電壓與絕緣技術','電力電子與電力傳動','電工理論與新技術'],   '計算機科學與技術': ['計算機系統結構','計算機軟件與理論','計算機應用技術'],   '土木工程': ['巖土工程', '結構工程','市政工程','防災減災工程及防護工程','橋梁與隧道工程'],   '地質資源與地質工程': ['礦產普查與勘探', '地球探測與信息技術','地質工程']  }}current_menu_dict=menu_data #存放當前級及后續各級菜單的嵌套字典,在最低級時為一個列表upper_menu_list=[]   #存放比當前級更高級別的所有菜單字典的列表,最后一個元素比current_menu_dict多一層父菜單temp_menu=[]     #存放當前級菜單的一個臨時列表while(True): for i,subject in enumerate(current_menu_dict):     #循環顯示出當前菜單的索引和菜單項  if type(current_menu_dict) == dict:      #如果當前菜單不是最低一級菜單,則顯示索引和菜單項   print(''.join(['/t'*len(upper_menu_list),'[',str(i),']',subject]))  else:              #如果當前菜單是最低一級菜單則只顯示菜單項,不顯示索引   print(''.join(['/t'*len(upper_menu_list),subject]))  temp_menu.append(subject) choice=input(''.join(['/t'*len(upper_menu_list),'>>>']))  #輸入選項 if choice.isdigit():           #如果輸入選項是菜單項對應的數字索引,則進入該菜單項下一級菜單  if type(current_menu_dict) == dict:       #如果當前菜單不是最低一級菜單,則通過輸入數字索引進入對應菜單項的下一級菜單   index = int(choice)   if index >= 0 and index < len(temp_menu):    key = temp_menu[index]    upper_menu_list.append(current_menu_dict)   #如果輸入數字包含在菜單項索引中,則高級別菜單列表添加當前菜單為其最后一個元素,而當前菜單進入索引對應的下一級菜單    current_menu_dict = current_menu_dict[key]   else:    print('輸入錯誤數字,請重新輸入!')  else:   print('已是最低級菜單,按b鍵退回上級菜單,按q鍵退出!') elif choice=='b':           #如果輸入選項是"b",則退回到上一級菜單  if len(upper_menu_list) > 0:        #如果當前菜單不是最高級菜單,取高級別菜單列表中的最后一個元素為當前菜單字典   current_menu_dict=upper_menu_list.pop()  else:             #如果當前菜單已是最高級菜單,不能回退   print('已是最高級菜單,不能回退,按數字鍵選擇菜單項進入子菜單,按q鍵退出') elif choice=='q':           #如果輸入選項是"q",則退出菜單  print('退出菜單!'.center(50,'*'))  exit() else:  print('輸入錯誤,請重新輸入') temp_menu=[]

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VEVB武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 酒泉市| 温宿县| 黔西县| 鹤庆县| 株洲市| 灌南县| 藁城市| 聂荣县| 宁化县| 海门市| 兴国县| 沙洋县| 临澧县| 许昌市| 贵溪市| 广平县| 尼勒克县| 萝北县| 伊金霍洛旗| 桃江县| 万荣县| 汉中市| 绥化市| 永丰县| 武定县| 科技| 海晏县| 友谊县| 郎溪县| 蒙阴县| 南部县| 正宁县| 永福县| 安丘市| 江都市| 永寿县| 故城县| 宿迁市| 大邑县| 澎湖县| 容城县|