#!/usr/bin/env python
# -*- coding:utf-8 -*-
# by wk
'''
用户交互,显示省市县三级联动的选择
要求:用户输入河北,则打印河北省下的市,用户输入市,则显示该河北省的这个市下的县
dic = {
"河北": {
"石家庄": ["鹿泉", "藁城", "元氏"],
"邯郸": ["永年", "涉县", "磁县"],
}
"河南": {
...
}
"山西": {
...
}
'''
# import sys
# 取出省市列表
def provinces_dict():
my_city_dict = {
"河北": {
"石家庄": ["鹿泉", "藁城", "元氏"],
"邯郸": ["永年", "涉县", "磁县"],
"唐山": ["玉田县", "乐亭县", "迁西县"],
},
"江苏": {
"南京": ["溧水", "高淳", "玄武"],
"苏州": ["平江", "虎丘", "虞山"],
"无锡": ["崇安", "南长", "北塘"],
},
"山西": {
"太原": ["清徐县", "阳曲县", "娄烦县"],
"大同": ["天镇县", "阳高县", "广灵县"],
"朔州": ["怀仁", "右玉", "山阴"],
}
}
return my_city_dict
# 省列表并输入被选择的省
def choose_provinces(provinces_list):
for provinces in provinces_list:
print(provinces)
my_provinces = input('请输入省的名称: ')
return my_provinces
# 传入省字典,展示城市列表并输入被选择的城市
def choose_city(my_city, my_provinces):
for area in my_city[my_provinces]:
print(area)
my_area = input('请输入城市的名称,返回上一级请按(B or b): ')
return my_area
# 传入省,市字典,展示县
def choose_location(my_city, choose_city, choose_area):
for mylocation in my_city[choose_city][choose_area]:
print(mylocation)
def main():
flag = True
while flag:
flag_provinces = True
my_provinces_dict = provinces_dict()
while flag_provinces:
flag_city = True
my_provinces = choose_provinces(my_provinces_dict)
if my_provinces not in my_provinces_dict:
print('您输入的信息有误,请重新输入!') # 如果输入的数据不在菜单里,需要重新输入
flag_city = False
while flag_city:
flag_location = True
my_city = choose_city(my_provinces_dict, my_provinces)
if my_city == 'B' or my_city == 'b': # 判断如果选择了B或者b返回上级菜单
flag_location = False # 退出本层循环
flag_city = False # 退出上层层循环
elif my_city not in my_provinces_dict[my_provinces]:
print('您输入的信息有误,请重新输入!') # 如果输入的数据不在菜单里,需要重新输入
flag_location = False # 退出本层循环
while flag_location:
choose_location(my_provinces_dict, my_provinces, my_city)
# if my_location not in my_provinces_dict[my_provinces][my_city]:
# flag_location = True
flag_location = False # 退出
flag_city = False
flag_provinces = False
flag = False
if __name__ == '__main__':
main()