python学習の道の例3-マルチレベルメニュー都市の詳細を表示


一、ケース全体で運用される知識点
   1.pythonデータ構造の辞書の使用、辞書ネスト辞書、辞書ネストリスト
   2.pythonデータ構造のリストの使用、辞書ネストリスト
   3.pythonデータ構造の文字列の使用、文字列のフォーマット
   4.while Trueデッドサイクルの使用
   5.if...else....文の使用
二、ケースデザインの核心思想
    1.都市情報を辞書+リストのデータ構造に格納する
   2.省、市、先を三級メニューにする
   3.各サブメニューには、ユーザの選択に応じて順次選択可能
三、コード
#!/usr/bin/env python
# -*- coding:utf-8 -*-
"""
message_dict = {
    "  ":{"  ":["  ","  ","  "],"  ":["  ","  ","    "]},
    "  ":{"  ":["   ","   ","  "],"  ":["  ","  ","  "]}
}

print message_dict.keys()

"""
#          、 、     
message_dict = {
    "sichuan":{
        "guangan":["wusheng","yuechi","linshui"],
        "guangyuan":["wangcang","cangxi"]
    },
    "beijing":{
        "chaoyang":["changying","guanzhuang","guomao"],
        "haidian":["zhongguancun","wudaokou","shangdi"]
    }
}

#         
for i in range(len(message_dict.keys())):
    new_item1 = "%s:%s" %(i+1,message_dict.keys()[i])
    print new_item1

#                    ,            
provence = raw_input("plz input select province:")
while True:
    if provence not in message_dict.keys():
        print "plz input correct!!!"
        provence = raw_input("plz input select province again:")
    else:
        break
message_dict1 = message_dict[provence]

#              
for j in range(len(message_dict1)):
    new_item2 = "%s:%s" %(j+1,message_dict1.keys()[j])
    print new_item2


#                  ,         
city = raw_input("plz select city:")
while True:
    if city not in message_dict1.keys():
        print "plz input correct!!!"
        city = raw_input("plz select city again:")
    else:
        break
message_list2 = message_dict1[city]
#                 
for k in range(len(message_list2)):
    new_item3 = "%s:%s" %(k+1,message_list2[k])
    print new_item3