最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python模擬三級(jí)菜單效果

 更新時(shí)間:2017年09月11日 08:50:32   作者:doreimi  
這篇文章主要為大家詳細(xì)介紹了Python模擬三級(jí)菜單效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

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

1.功能簡(jiǎn)介

此程序模擬多級(jí)菜單操作,實(shí)現(xiàn)按菜單項(xiàng)對(duì)應(yīng)數(shù)字索引進(jìn)入下級(jí)菜單,按b鍵回退到上一級(jí)菜單,按q鍵退出菜單。并用一個(gè)簡(jiǎn)化的學(xué)科專業(yè)目錄進(jìn)行了三級(jí)菜單測(cè)試,實(shí)際上此程序可適用任意多級(jí)菜單操作。 

2.實(shí)現(xiàn)方法

本程序采用python語(yǔ)言編寫,為了高效實(shí)現(xiàn)菜單操作,減少循環(huán)次數(shù),關(guān)鍵定義了如下三個(gè)變量:

current_menu_dict:非最低級(jí)菜單時(shí)為一個(gè)嵌套字典,在最低級(jí)菜單時(shí)為一個(gè)列表,存放當(dāng)前級(jí)及后續(xù)各級(jí)菜單。
upper_menu_list:一個(gè)列表,存放比當(dāng)前級(jí)更高級(jí)別的所有菜單嵌套字典的列表,最后一個(gè)元素比current_menu_dict多一層父菜單。
temp_menu:一個(gè)列表,只存放當(dāng)前級(jí)的菜單,即為current_menu_dict的鍵值。

菜單操作過(guò)程:

(1)按數(shù)字鍵進(jìn)入對(duì)應(yīng)的下級(jí)菜單:數(shù)字鍵是temp_menu的索引,根據(jù)索引提取當(dāng)前菜單項(xiàng),即為current_menu_dict的一個(gè)鍵值,據(jù)此current_menu_dict可重新指向該鍵值對(duì)應(yīng)的下一級(jí)菜單嵌套字典,不過(guò)在進(jìn)入下級(jí)菜單之前,upper_menu_list.append(current_menu_dict)先把當(dāng)前菜單嵌套字典添加為upper_menu_list的最后一個(gè)元素,為回退做準(zhǔn)備。
(2)按b鍵回退到上一級(jí)菜單:回退時(shí)current_menu_dict=upper_menu_list.pop()獲取上一級(jí)菜單嵌套字典,實(shí)現(xiàn)回退。
(3)按q鍵退出菜單:按q鍵時(shí)調(diào)用exit()退出程序。

簡(jiǎn)例示意:假設(shè)三級(jí)菜單字典為{一級(jí)菜單:{二級(jí)菜單:三級(jí)菜單}},如果當(dāng)前菜單在第二級(jí),此時(shí)
current_menu_dict={二級(jí)菜單:三級(jí)菜單}
upper_menu_list=[{一級(jí)菜單:{二級(jí)菜單:三級(jí)菜單}}]
temp_menu=[二級(jí)菜單]

3.流程圖

4.代碼

# Author:Byron Li

menu_data={
 '文學(xué)':
  {
   '中國(guó)語(yǔ)言文學(xué)':['語(yǔ)言學(xué)及應(yīng)用語(yǔ)言學(xué)','漢語(yǔ)言文字學(xué)','中國(guó)古代文學(xué)','中國(guó)現(xiàn)當(dāng)代文學(xué)'],
   '外國(guó)語(yǔ)言文學(xué)':['英語(yǔ)語(yǔ)言文學(xué)','亞非語(yǔ)言文學(xué)','阿拉伯語(yǔ)語(yǔ)言文學(xué)','外國(guó)語(yǔ)言學(xué)及應(yīng)用語(yǔ)言學(xué)'],
   '新聞傳播學(xué)': ['新聞學(xué)', '傳播學(xué)'],
   '藝術(shù)學(xué)': ['音樂(lè)學(xué)', '美術(shù)學(xué)','戲劇戲曲學(xué)','電影學(xué)','舞蹈學(xué)']
  },

 '理學(xué)':
  {
   '數(shù)學(xué)':['基礎(chǔ)數(shù)學(xué)','計(jì)算數(shù)學(xué)','概率論與數(shù)理統(tǒng)計(jì)','應(yīng)用數(shù)學(xué)','運(yùn)籌學(xué)與控制論'],
   '物理學(xué)':['理論物理','粒子物理與原子核物理','原子與分子物理','等離子體物理','無(wú)線電物理'],
   '化學(xué)': ['無(wú)機(jī)化學(xué)','分析化學(xué)','有機(jī)化學(xué)','物理化學(xué)','高分子化學(xué)與物理'],
   '生物學(xué)': ['植物學(xué)', '動(dòng)物學(xué)','生理學(xué)','微生物學(xué)','遺傳學(xué)'],
   '地球物理學(xué)': ['固體地球物理學(xué)', '空間物理學(xué)']
  },
 '工學(xué)':
  {
   '機(jī)械工程':['機(jī)械制造及其自動(dòng)化','機(jī)械電子工程','機(jī)械設(shè)計(jì)及理論','車輛工程'],
   '電氣工程':['電力系統(tǒng)及其自動(dòng)化','高電壓與絕緣技術(shù)','電力電子與電力傳動(dòng)','電工理論與新技術(shù)'],
   '計(jì)算機(jī)科學(xué)與技術(shù)': ['計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)','計(jì)算機(jī)軟件與理論','計(jì)算機(jī)應(yīng)用技術(shù)'],
   '土木工程': ['巖土工程', '結(jié)構(gòu)工程','市政工程','防災(zāi)減災(zāi)工程及防護(hù)工程','橋梁與隧道工程'],
   '地質(zhì)資源與地質(zhì)工程': ['礦產(chǎn)普查與勘探', '地球探測(cè)與信息技術(shù)','地質(zhì)工程']
  }
}

current_menu_dict=menu_data #存放當(dāng)前級(jí)及后續(xù)各級(jí)菜單的嵌套字典,在最低級(jí)時(shí)為一個(gè)列表
upper_menu_list=[]   #存放比當(dāng)前級(jí)更高級(jí)別的所有菜單字典的列表,最后一個(gè)元素比current_menu_dict多一層父菜單
temp_menu=[]     #存放當(dāng)前級(jí)菜單的一個(gè)臨時(shí)列表

while(True):
 for i,subject in enumerate(current_menu_dict):     #循環(huán)顯示出當(dāng)前菜單的索引和菜單項(xiàng)
  if type(current_menu_dict) == dict:      #如果當(dāng)前菜單不是最低一級(jí)菜單,則顯示索引和菜單項(xiàng)
   print(''.join(['\t'*len(upper_menu_list),'[',str(i),']',subject]))

  else:              #如果當(dāng)前菜單是最低一級(jí)菜單則只顯示菜單項(xiàng),不顯示索引
   print(''.join(['\t'*len(upper_menu_list),subject]))
  temp_menu.append(subject)

 choice=input(''.join(['\t'*len(upper_menu_list),'>>>']))  #輸入選項(xiàng)
 if choice.isdigit():           #如果輸入選項(xiàng)是菜單項(xiàng)對(duì)應(yīng)的數(shù)字索引,則進(jìn)入該菜單項(xiàng)下一級(jí)菜單
  if type(current_menu_dict) == dict:       #如果當(dāng)前菜單不是最低一級(jí)菜單,則通過(guò)輸入數(shù)字索引進(jìn)入對(duì)應(yīng)菜單項(xiàng)的下一級(jí)菜單
   index = int(choice)
   if index >= 0 and index < len(temp_menu):
    key = temp_menu[index]
    upper_menu_list.append(current_menu_dict)   #如果輸入數(shù)字包含在菜單項(xiàng)索引中,則高級(jí)別菜單列表添加當(dāng)前菜單為其最后一個(gè)元素,而當(dāng)前菜單進(jìn)入索引對(duì)應(yīng)的下一級(jí)菜單
    current_menu_dict = current_menu_dict[key]
   else:
    print('輸入錯(cuò)誤數(shù)字,請(qǐng)重新輸入!')
  else:
   print('已是最低級(jí)菜單,按b鍵退回上級(jí)菜單,按q鍵退出!')
 elif choice=='b':           #如果輸入選項(xiàng)是"b",則退回到上一級(jí)菜單
  if len(upper_menu_list) > 0:        #如果當(dāng)前菜單不是最高級(jí)菜單,取高級(jí)別菜單列表中的最后一個(gè)元素為當(dāng)前菜單字典
   current_menu_dict=upper_menu_list.pop()
  else:             #如果當(dāng)前菜單已是最高級(jí)菜單,不能回退
   print('已是最高級(jí)菜單,不能回退,按數(shù)字鍵選擇菜單項(xiàng)進(jìn)入子菜單,按q鍵退出')
 elif choice=='q':           #如果輸入選項(xiàng)是"q",則退出菜單
  print('退出菜單!'.center(50,'*'))
  exit()
 else:
  print('輸入錯(cuò)誤,請(qǐng)重新輸入')
 temp_menu=[]

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Python3中FuzzyWuzzy庫(kù)實(shí)例用法

    Python3中FuzzyWuzzy庫(kù)實(shí)例用法

    在本篇文章中小編給各位整理了關(guān)于Python3z中FuzzyWuzzy庫(kù)實(shí)例用法及相關(guān)代碼,有興趣的朋友們可以參考下。
    2020-11-11
  • python中%格式表達(dá)式實(shí)例用法

    python中%格式表達(dá)式實(shí)例用法

    在本篇文章里小編給大家整理的是一篇關(guān)于python中%格式表達(dá)式實(shí)例用法的相關(guān)內(nèi)容,有興趣的朋友們可以跟著學(xué)習(xí)下。
    2021-06-06
  • Python使用sys.path查看當(dāng)前的模塊搜索路徑

    Python使用sys.path查看當(dāng)前的模塊搜索路徑

    sys.path 是 Python 中的一個(gè)列表,它用于存儲(chǔ)模塊搜索路徑,當(dāng)你使用 import 語(yǔ)句導(dǎo)入一個(gè)模塊時(shí),Python 會(huì)按照 sys.path 列表中的路徑順序來(lái)查找這個(gè)模塊,本文給大家介紹了Python使用sys.path查看當(dāng)前的模塊搜索路徑,需要的朋友可以參考下
    2025-02-02
  • Python使用Kafka處理數(shù)據(jù)的方法詳解

    Python使用Kafka處理數(shù)據(jù)的方法詳解

    Kafka是一個(gè)分布式的流數(shù)據(jù)平臺(tái),它可以快速地處理大量的實(shí)時(shí)數(shù)據(jù)。在Python中使用Kafka可以幫助我們更好地處理大量的數(shù)據(jù),本文就來(lái)和大家詳細(xì)講講具體使用方法吧
    2023-04-04
  • Python爬取OPGG上英雄聯(lián)盟英雄勝率及選取率信息的操作

    Python爬取OPGG上英雄聯(lián)盟英雄勝率及選取率信息的操作

    這篇文章主要介紹了Python爬取OPGG上英雄聯(lián)盟英雄勝率及選取率信息的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-04-04
  • PyQt5打開文件對(duì)話框QFileDialog實(shí)例代碼

    PyQt5打開文件對(duì)話框QFileDialog實(shí)例代碼

    這篇文章主要介紹了PyQt5打開文件對(duì)話框QFileDialog實(shí)例代碼,分享了相關(guān)代碼示例,小編覺得還是挺不錯(cuò)的,具有一定借鑒價(jià)值,需要的朋友可以參考下
    2018-02-02
  • Django認(rèn)證系統(tǒng)user對(duì)象實(shí)現(xiàn)過(guò)程解析

    Django認(rèn)證系統(tǒng)user對(duì)象實(shí)現(xiàn)過(guò)程解析

    這篇文章主要介紹了Django認(rèn)證系統(tǒng)user對(duì)象實(shí)現(xiàn)過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-03-03
  • 淺談Python type的使用

    淺談Python type的使用

    今天小編就為大家分享一篇淺談Python type的使用,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-11-11
  • 詳解pyqt5 動(dòng)畫在QThread線程中無(wú)法運(yùn)行問(wèn)題

    詳解pyqt5 動(dòng)畫在QThread線程中無(wú)法運(yùn)行問(wèn)題

    這篇文章主要介紹了詳解pyqt5 動(dòng)畫在QThread線程中無(wú)法運(yùn)行問(wèn)題,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-05-05
  • 如何準(zhǔn)確判斷請(qǐng)求是搜索引擎爬蟲(蜘蛛)發(fā)出的請(qǐng)求

    如何準(zhǔn)確判斷請(qǐng)求是搜索引擎爬蟲(蜘蛛)發(fā)出的請(qǐng)求

    我們的網(wǎng)站經(jīng)常被各種蜘蛛爬蟲光顧,由于這些爬蟲都有UserAgent,所以很多朋友使用UserAgent判斷請(qǐng)求的發(fā)起者是否是搜索引擎爬蟲的方式是很不準(zhǔn)確的,接下來(lái),通過(guò)本篇文章給大家介紹準(zhǔn)確判斷請(qǐng)求是搜索引擎爬蟲(蜘蛛)發(fā)出的請(qǐng)求的方法,需要的朋友可以參考下
    2015-10-10

最新評(píng)論

克拉玛依市| 化州市| 河北区| 清新县| 嘉荫县| 宁德市| 宁化县| 如皋市| 清原| 海原县| 甘泉县| 濮阳县| 娱乐| 原阳县| 永寿县| 阿克苏市| 贵港市| 南木林县| 多伦县| 通化市| 东山县| 罗源县| 长垣县| 双辽市| 历史| 韩城市| 红原县| 普定县| 广饶县| 邹平县| 太仓市| 米林县| 海门市| 武胜县| 方城县| 克山县| 山西省| 逊克县| 萨迦县| 宁安市| 荣成市|