python 字符串 三级菜单
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('已经到底了')

浙公网安备 33010602011771号