python之三級菜單編寫

来源:http://www.cnblogs.com/jiakesi/archive/2017/09/27/7600385.html
-Advertisement-
Play Games

要求:1.列印市、區、街道三級菜單 2.按b可隨時返回上一級 3.按q可隨時退出程式 1 dict={'北京':{'海澱區':['中關村','北太平莊','西三旗'], '昌平區':['回龍觀','霍營','沙河'],'朝陽區':['酒仙橋','望京','將台']}, 2 '上海':{'浦東新區': ...


要求:1.列印市、區、街道三級菜單      2.按b可隨時返回上一級      3.按q可隨時退出程式

 1 dict={'北京':{'海澱區':['中關村','北太平莊','西三旗'], '昌平區':['回龍觀','霍營','沙河'],'朝陽區':['酒仙橋','望京','將台']},
 2       '上海':{'浦東新區':['陸家嘴','周家渡','塘橋'],'寶山區':['羅店鎮','大場鎮','楊行鎮'],'虹口區':['廣中路','曲陽路','歐陽路']},
 3       '廣州':{'白雲區':['曲沃','侯馬','臨汾'],'天河區':['運城','新絳','聞喜'],'南沙區':['太原','小店','杏花嶺']}}
 4 dict_list = list(dict.keys())
 5 while True:
 6     for i in dict_list:
 7         print(i)
 8     town=input('請輸入你的工作地點或輸入q(quit)退出:')
 9     while not town.strip():
10         town = input('請再次輸入你的工作地點或輸入q(quit)退出:')
11     if town in dict_list:
12         area_list=list(dict[town].keys())
13         #while True:
14         #for b in area_list:
15             #print(b)
16         while True:
17             for b in area_list:
18                 print(b)
19             area=input('請選擇區,或輸入b(back)返回上級菜單,或輸入q(quit)退出:')
20             while not town.strip():
21                 area = input('請正確輸入:')
22             if area in area_list:
23                 row_list=dict[town][area]
24                 #for a in dict[town][area]:
25                     #print(a)
26                 while True:
27                         for a in dict[town][area]:
28                             print(a)
29                         row=input('請選擇街道,或輸入b(back)返回上級菜單,或輸入q(quit)退出:')
30                         while not row.strip():
31                             row = input('請正確輸入:')
32                         if row in dict[town][area]:
33                             print ('您的信息是:\n',town,'(市)',area,'(區)',row,'(路)')
34                             exit()
35                         elif row == 'b':
36                             break
37                         elif row == 'q':
38                             exit()
39 
40                         else:
41                             print('您輸入的地點有誤 請重新輸入')
42             elif area == 'b':      ###break  終止此次迴圈  跳到上一個迴圈
43                 break
44             elif area == 'q':    ####直接退出程式
45                 exit()
46 
47             else:
48                 print('您輸入的地點有誤 請重新輸入')
49     elif town == 'q':
50         break
51 
52     else:
53         print('您輸入的地點有誤 請重新輸入')
View Code

 

dict={'北京':{'海澱區':['中關村','北太平莊','西三旗'], '昌平區':['回龍觀','霍營','沙河'],'朝陽區':['酒仙橋','望京','將台']},
      '上海':{'浦東新區':['陸家嘴','周家渡','塘橋'],'寶山區':['羅店鎮','大場鎮','楊行鎮'],'虹口區':['廣中路','曲陽路','歐陽路']},
      '廣州':{'白雲區':['曲沃','侯馬','臨汾'],'天河區':['運城','新絳','聞喜'],'南沙區':['太原','小店','杏花嶺']}}
dict_list = list(dict.keys())              ##將北上廣以列表形式顯示出來
while True:
    for i in dict_list:              
        print(i)            #列印市
    town=input('請輸入你的工作地點或輸入q(quit)退出:')
    while not town.strip():
        town = input('請再次輸入你的工作地點或輸入q(quit)退出:')
    if town in dict_list:              #判斷是否在列表中
        area_list=list(dict[town].keys())   #顯示區信息 以列表形式
        #while True:
        #for b in area_list:
            #print(b)
        while True:
            for b in area_list:         #迴圈讀取區信息
                print(b)
            area=input('請選擇區,或輸入b(back)返回上級菜單,或輸入q(quit)退出:')
            while not town.strip():
                area = input('請正確輸入:')
            if area in area_list:                   
                row_list=dict[town][area]       #街道信息
                #for a in dict[town][area]:
                    #print(a)
                while True:
                        for a in dict[town][area]:
                            print(a)
                        row=input('請選擇街道,或輸入b(back)返回上級菜單,或輸入q(quit)退出:')
                        while not row.strip():
                            row = input('請正確輸入:')
                        if row in dict[town][area]:
                            print ('您的信息是:\n',town,'(市)',area,'(區)',row,'(路)')
                            exit()
                        elif row == 'b': 
                            break             #結束此次迴圈 自動跳到上一層迴圈
                        elif row == 'q':
                            exit()           #直接終止程式

                        else:
                            print('您輸入的地點有誤 請重新輸入')
            elif area == 'b':      ###break  終止此次迴圈  跳到上一個迴圈
                break
            elif area == 'q':    ####直接退出程式
                exit()

            else:
                print('您輸入的地點有誤 請重新輸入')
    elif town == 'q':
        break

    else:
        print('您輸入的地點有誤 請重新輸入')

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • namespace params可變參數{ class Program { static void Main(string[] args) { int[] num = {66,99,55,44, }; Test("老王",num); Test("老王",55,55,55); //從方法哪裡的參數可以 ...
  • ASP.NET MVC4,ASP.NET MVC5中對JS和CSS的引用又做了一次變化,在MVC3中我們這樣引用資源文件: 將在運行的時候自動將虛擬(相對)路徑轉換為應用程式絕對路徑。這是比較傳統的引用方式,儘管他做了一次轉換操作,對伺服器的請求數量壓力並沒有什麼改進的變化,所以推測可能出於模塊化設 ...
  • 1、刪除 xxxAreaRegistration.cs文件 2、HomeController 2、JoinController 3、生成鏈接 @Url.RouteUrl("JoinCode", new {action="Index",controller="Join",code=item["code ...
  • 具名參數 和 可選參數 是 C# framework 4.0 出來的新特性。 一. 常規方法定義及調用 調用時,參數順序(類型)必須與聲明一致,且不可省略。 二. 可選參數的聲明及調用 可選參數分為兩種情況: 1. 部分參數可選; 2. 全部參數都是可選 註: 當參數為部分可選時, 可選參數 的聲明 ...
  • public class SqlHlper { public static readonly string constr = ConfigurationManager.ConnectionStrings["constr"].ConnectionString; //執行增刪改 public stati ...
  • namespace ArrayListd的長度問題{ class Program { static void Main(string[] args) { //需要的參數是object類型 //alt+shift+F10添加引用using System.Collections; ArrayList l ...
  • 1.複習里氏轉換:1)、子類可以賦值給父類(如果有一個方法需要一個父類作為參數,我們可以傳第一個子類對象)2)、如果父類中裝的是子類對象,則可以將這個父類強轉為子類對象 is和as判斷轉換成功失敗 1 Person p = new Student(); 2 //if(p is Student) 3 ...
  • 基於上篇文章 "《HiBlogs》重寫筆記[1] 從DbContext到依賴註入再到自動註入" 園友 @Flaming丶淡藍@ 吳瑞祥 提出了討論和質疑,嚇得我連夜查詢資料(玩笑~)。 本來重點是想分析“自動註入”和對“註入”有更深的理解。不過既然有疑問和討論那也是很好的。總比時不時來篇“這個不行” ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...