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('已经到底了')    

 

posted @ 2020-09-15 15:55  小白26  阅读(137)  评论(0)    收藏  举报