python 字串 三級選單
阿新 • • 發佈:2020-09-15
python中的字串
字串通過使用單引號、雙引號、或三引號來進行表示
1 a = '123' 2 b = 'abc' 3 print(a*10) # 重複輸出字串 4 5 print('hello world '[2:]) # 通過對字串進行切片操作來獲取某一段字串的值 6 7 # 關鍵字判斷 8 print('el' in 'hello') 9 print('a' in 'hello') 10 11 # %格式字元的使用 12 print('%s is a good boy' % 'zhangsan') 13 14 # 字串的連線 15 c = a.join(b) #在a字串的每一個字元後面加入b的字串 16 print(c) 17 c = ''.join([a, b]) # 將a和b字串連在一起 18 print(c) 19 20 """字串的一些重要方法""" 21 22 str1 = "Zhang San is a good boy " 23 str2 = '{name} is a boy ' 24 print(str1.count('a')) # 統計字串中某個元素的數量 25 print(str1.center(50, "-")) # 字串居中 26 print(str1.startswith('hu')) # 判斷字串是否以某一個內容開頭27 print(str1.find('a')) # 尋找字串中的某一個值的數量 28 print(str2.format(name='zhang san')) # 另一種格式化輸出 將字串{}中的數替換 29 print(str1.upper()) # 將字串全部大寫 30 print(str1.lower()) # 將字串全部小寫 31 print('\thuang lei\n'.strip()) # 去掉字串中的特殊字元 32 print(str1.replace('o', 'zhang san ', 2)) # 替換字串中的某一個內容 重複替換2次或多次 33 print(str1.split('o', 1)) # 以某一個物件將字串分割 返回的是一個列表
在字串的一些方法中只展現了部分的方法,還有很對不常用到的方法
三級選單
要求:
1.一級一級的進入到省、市、縣。。。
2.可以一級一級的返回
3、可以隨時退出
分析:
通過while迴圈進行多層的巢狀,for迴圈來實現對內容的輸出,通過對選單進行標識來選擇進入哪一個選單。用flag標誌來實現退出和返回操作。
程式碼問題:
實現的不夠完備,存在需求實現錯誤,不能準確的實現使用者需要,通過數字標識進入某一個選單,而不是通過名稱,存在多重迴圈,迴圈過多。
程式碼實現
1 area = {'江蘇': {'揚州': ['高郵', '儀徵'], '鹽城': ['亭湖區', '鹽都區']}, 2 '湖北': {'武漢': ['洪山區', '江岸區'], '荊州': ['石首', '公安縣']}, 3 '湖南': {'長沙': ['天心區', '開福區'], '邵陽': ['隆回', '邵東']} 4 } 5 print('進入三級選單'.center(20, '-')) 6 # 定義標誌來決定迴圈是否結束 7 flag1 = True 8 flag2 = True 9 # 進入第一步 省份 的迴圈 10 while flag1: 11 province = list(area.keys()) # 取出字典中鍵並轉換成一個列表 12 # # 打印出列表中的內容 即字典中的鍵 13 # for i, v in enumerate(province, 1): 14 # print(i, '>>>:', v) 15 for i in area: 16 print(i) 17 choice = input('選擇你要進入的省份:[退出:q]') 18 # 判定進入省份的 19 if choice.isdigit(): 20 choice = int(choice) 21 while flag2: 22 # 取出字典中巢狀的字典的鍵 即城市 23 city = area[province[choice-1]] 24 for i in city: 25 print(i) 26 # 列印城市 27 # for i, v in enumerate(city, 1): 28 # print(i, '>>>:', v) 29 choice1 = input('選擇你要進入的市:[退出:q,返回:f]') 30 # 判定進入哪個城市 或者返回 退出 31 if choice1.isdigit(): 32 choice1 = int(choice1) 33 # 進入最後一個縣迴圈 34 while True: 35 print('您選擇的市下的縣為:[退出:q]') 36 # 取出巢狀的字典 37 # c1 = list(area.values())[0] 38 # 取出巢狀字典的值 39 town = list(city.values())[choice1-1] 40 # 列印縣 41 for i in range(len(town)): 42 print(town[i-1]) 43 # for i, v in enumerate(town, 1): 44 # print(i, '>>>:', v) 45 choice2 = input('請選擇是否退出,退出請輸入q,返回上一級:f') 46 # 執行退出 或返回操作 47 if choice2 == 'q': 48 flag1 = False 49 flag2 = False 50 break 51 elif choice2 == 'f': 52 break 53 elif choice1 == 'q': 54 flag1 = False 55 flag2 = False 56 elif choice1 == 'f': 57 flag2 = False 58 elif choice == 'q': 59 flag1 = False
對程式碼以目前的知識進行修改:
通過一個while迴圈來實現,對迴圈中的變數每一次迴圈都進行一次修改,並且在列表中儲存迴圈中產生的上一級的字典,在返回時使用並刪除在列表中的記錄
1 area = {'江蘇': 2 {'揚州': 3 {'高郵': 4 {}, 5 '儀徵': {}}, 6 '鹽城': 7 {'亭湖區': 8 {}, 9 '鹽都區': 10 {} 11 } 12 }, 13 '湖北': 14 {'武漢': 15 {'洪山區': 16 {}, 17 '江岸區': 18 {}}, 19 '荊州': {'石首': 20 {}, 21 '公安縣': 22 {} 23 } 24 }, 25 '湖南': 26 {'長沙': 27 {'天心區': 28 {}, 29 '開福區': 30 {}}, 31 '邵陽': 32 {'隆回': 33 {}, 34 '邵東': 35 {}} 36 } 37 } 38 current = area 39 back = [] 40 while True: 41 for key in current: 42 print(key) 43 choice = input('>>>[q:退出,b返回]').strip() 44 if choice == 0: 45 continue 46 elif choice == 'b': # 判斷是否返回 47 current = back.pop() # 取列表最後一個值用於返回到上一級的字典,並刪除當前層的字典 48 elif choice in current: # 進入下一個選單 49 back.append(current) # 保留上一級的字典,新增到列表中 50 current = current[choice] 51 elif choice == 'q': 52 print('退出') 53 break 54 else: 55 print('已經到底了')