werew33 发表于 2015-11-4 09:00:55

PYTHON 字典方式的多级菜单显示

用python的字典和for循环方式写的一个多级菜单显示
下面是简要的图形思路:

下面是代码实现方式:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
#__author__ = 'weibinf'
dict = {
    "黑龙江":{
      "哈尔滨":{
            "方正县":['天门乡','宝兴乡'],
            "宾县":['永和乡','民和乡'],
            "木兰县":["吉兴乡","建国乡"],
            },
      "大庆":{
            "肇州县":["福兴乡","浩德蒙古族乡"],
            "林甸县":['三合乡','黎明乡']
      },
    },
    "山西":{
      "太原":{
            "清徐县":['西谷乡',"集义乡"],
            "阳曲县":['凌井店乡','西凌井乡']
      },
      "朔州":{
            "应县":["南泉乡","下马峪乡"],
            "怀仁县":['亲和乡','新家园乡']
      },
    },
}
exit_flag = False
num = 0
while not exit_flag:
    for index,key in enumerate(dict.keys()):
      num +=1
      print "\033[32m-->\033[0m",index,key
    a_1 = num
    num = 0
    choice_1 = raw_input("\033[34mPlease your num: \033[0m").strip()
    if not choice_1.isdigit():
      if choice_1 == 'quit':
            exit_flag = True
            print "\033[31m<------>going to quit<----->\033[0m"
      else:
            print "\033[31m请输入正确的数字、、、\033[0m"
    else:
      choice_1 = int(choice_1)
      if choice_1 >= a_1:
            print "\033[31m对不起,请输入正确的对应数字、、、\033[0m"
      elif choice_1 < a_1:
            key_1 = dict.keys()
            num = 0
            while not exit_flag:
                for index,key in enumerate(dict):
                  num +=1
                  print "\033[32m---->\033[0m",index,key
                a_2 = num
                num = 0
                choice_2 = raw_input("\033[34mPlease your num1: \033[0m").strip()
                if not choice_2.isdigit():
                  if choice_2 == 'back':
                        break
                  elif choice_2 == 'quit':
                        exit_flag = True
                        print "\033[31m<------>going to quit<----->\033[0m"
                        break
                else:
                  choice_2 = int(choice_2)
                  if choice_2 >= a_2:
                        print "\033[31m对不起,请输入正确的对应数字、、、\033[0m"
                  elif choice_2 < a_2:
                        key_2 = dict.keys()
                        while not exit_flag:
                            for index,key in enumerate(dict):
                              num += 1
                              print "\033[32m------>\033[0m",index,key
                            a_3 = num
                            num = 0
                            choice_3 = raw_input("\033[34mPlease your num2: \033[0m").strip()
                            if not choice_3.isdigit():
                              if choice_3 == 'quit':
                                    exit_flag = True
                                    print "\033[31m<------>going to quit<----->\033[0m"
                                    break
                              if choice_3 == 'back':
                                    break
                            else:
                              choice_3 = int(choice_3)
                              if choice_3 >= a_3:
                                    print "\033[31m对不起,请输入正确的对应数字、、、\033[0m"
                              elif choice_3 < a_3:
                                    key_3 = dict.keys()
                                    while not exit_flag:
                                        for index,key in enumerate(dict):
                                          print "\033[32m-------->\033[0m",index,key
                                        choice_4 = raw_input("\033[34mPlease your num3: \033[0m").strip()
                                        if choice_4.isdigit():
                                          print "\033[31m<<已经是最后一层了、、、>>\033[0m"
                                        elif choice_4 == 'quit':
                                          exit_flag = True
                                        elif choice_4 == 'back':
                                          break
                                    else:
                                        print "\033[31m<------>going to quit<----->\033[0m"

页: [1]
查看完整版本: PYTHON 字典方式的多级菜单显示