Python三级菜单实例详解


本文摘自php中文网,作者巴扎黑,侵删。

下面小编就为大家带来一篇Python三级菜单的实例。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

要求:

打印省、市、县三级菜单

可返回上一级

可随时退出程序

版本1


1

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

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

# _author : Ahern Li

# @_date : 2017/9/12

 

menu = {

  '浙江省':{

    '杭州市':{

      '余杭区':{'中泰':{},'临平':{}},

      '西湖区':{'西湖':{},'留下':{}}

      },

    '温州市':{

      '苍南县':{'灵溪':{},'龙港':{}},

      '瑞安县':{'安阳':{},'锦湖':{}}

      }

    },

  '广东省':{

    '广州市':{

      '越秀区':{'人民路':{},'北京路':{}},

      '荔湾区':{'沙面':{},'龙津':{}}

      },

    '珠海市':{

      '香洲区':{'拱北':{},'吉大':{}},

      '金湾区':{'红旗镇':{},'平沙镇':{}}

      }

    }

  }

 

# 返回标记

q_flag = True

# 退出标记

Q_flag = True

# 返回,退出标记出现False退出循环

while q_flag and Q_flag:

  # 遍历打印省份

  for i in menu:

    print(i)

  province = input('请输入要查找的省份(Q,退出):').strip()

  if province in menu:

    while q_flag and Q_flag:

      for i in menu[province]:

        print(i)

      city = input('请输入要查找的市(q,返回 或 Q,退出):').strip()

      if city in menu[province]:

        while q_flag and Q_flag:

          for i in menu[province][city]:

            print(i)

          county = input('请输入要查找的区或县(q,返回 或 Q,退出):').strip()

          if county in menu[province][city]:

            while q_flag and Q_flag:

              for i in menu[province][city][county]:

                print(i)

              # 提示最后一页,输入格式

              choice = input('最后一页! q,返回 或 Q,退出:').strip()

              if choice == 'q':

                # 配合 else: q_flag = True 退出该层循环,返回上层循环

                q_flag = False

              elif choice == 'Q':

                # 退出大循环

                Q_flag = False

              else:

                # 提示输入不合法

                print('输入错误!')

            # 改回 q_flag 的值,实现只退出一层循环

            else:

              q_flag = True

          elif county == 'q':

            q_flag = False

          elif county == 'Q':

            Q_flag = False

          else:

            print('输入错误!')

        else:

          q_flag = True

      elif city == 'q':

        q_flag = False

      elif city == 'Q':

        Q_flag = False

      else:

        print('输入错误!')

    else:

      q_flag = True

  elif province == 'Q':

    Q_flag = False

  else:

    print('输入错误!')

版本2


1

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

39

40

41

42

43

44

45

46

47

48

49

50

# _author : Ahern Li

# @_date : 2017/9/12

 

menu = {

  '浙江省':{

    '杭州市':{

      '余杭区':{'中泰':{},'临平':{}},

      '西湖区':{'西湖':{},'留下':{}}

      },

    '温州市':{

      '苍南县':{'灵溪':{},'龙港':{}},

      '瑞安县':{'安阳':{},'锦湖':{}}

      }

    },

  '广东省':{

    '广州市':{

      '越秀区':{'人民路':{},'北京路':{}},

      '荔湾区':{'沙面':{},'龙津':{}}

      },

    '珠海市':{

      '香洲区':{'拱北':{},'吉大':{}},

      '金湾区':{'红旗镇':{},'平沙镇':{}}

      }

    }

  }

 

current_layer = menu  # 实现动态循环

parent_layer = []  # 保留所有父层,最后一个元素永远为父层

 

while True:

  print() # 仅为了打印美观

  for i in current_layer:   # 遍历打印地址

    print(i)

  choice = input('请在下方输入查询地址\n>>>:').strip()

  if choice in current_layer:

    if current_layer[choice]:  # 判断是否为末层

      parent_layer.append(current_layer) # 进入子层前,添加当前层作为父层

      current_layer = current_layer[choice]  # 修改子层

    else:

      print('当前是最后一页')

  elif choice == '':

    continue

  elif choice == 'q':   # 返回上层

    if parent_layer:  # 判断 parent_layer 是否为空

      current_layer = parent_layer.pop() # 取出当前层父层

  # 退出循环

  elif choice == 'Q':

    break

  else:

    print('输入错误!')

以上就是Python三级菜单实例详解的详细内容,更多文章请关注木庄网络博客!!

相关阅读 >>

Python模拟表单提交登录图书馆

Python怎么求余数

Python空类型是什么

Python如何安装opencv库

Python文件读写保存操作的实现代码

人生苦短,学习Python

Python需要学linux吗

Python实现百度语音识别api

详解Python的命名规则

input Python怎么用

更多相关阅读请进入《Python》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...