首页 > 技术文章 > Python实现用户交互,显示省市县三级联动的选择

fyknight 2017-12-05 12:17 原文

题目:Python实现用户交互,显示省市县三级联动的选择

 

定义的字典为:

  dic = {   

      "江西": {    "萍乡": ["安源", "彭高", "上栗"],    "新余": ["良山", "新钢", "兴安岭"],    },  

      "北京": {    "大兴区": ["礼贤镇", "魏善庄镇", "北臧村镇"],    "昌平区": ["沙河", "化庄", "白浮泉"],    },   

      "福建": {    "莆田": ["荔城", "西天尾", "九化山"],    "厦门": ["湖里", "思明", "海仓"],    }  

 }

 

分析:

  大体步骤分为以下三步:

  1、用户输入一个省份时,判断用户输入的省份是否在字典里。

  2、当用户输入的省份在字典里时,将用户输入的这个省份所对应的所有值——该省份下的所有城市的字典取出来。

  3、将该省分所对应的所有城市打印出来后,当用户再输入要查找的城市时,如果存在则将相对应城市下的县取出来。

 

代码:

dic = {
    "江西": {
        "萍乡": ["安源", "彭高", "上栗"],
        "新余": ["良山", "新钢", "兴安岭"],
    },
    "北京": {
        "大兴区": ["礼贤镇", "魏善庄镇", "北臧村镇"],
        "昌平区": ["沙河", "化庄", "白浮泉"],
    },
    "福建": {
        "莆田": ["荔城", "西天尾", "九化山"],
        "厦门": ["湖里", "思明", "海仓"],
    }
}
print('可查询的省份:江西、北京、福建')

# 让用户输入要查询的省份。
while True:
    province = input('请输要查询的省份:')

    # 当用户输入的省份不在要查询的字典中时,跳出本次循环,继续让用户输入。
    if not province in dic:
        print('输入错误,请重新输入')
        continue

    # 当用户输入的要查询的省份在字典中时,跳出循环。
    break

# 将用户输入的省份去取出字典中的指定的省份(键)的值——市级字典,
# 然后遍历每个市级字典,遍历的的结果是取出市级字典中每个键。
for i in dic[province]:
    print(i,end = ' ') # 取出的市级字典中的每个城市(键),并作一行显示。

# 让用户输入要查询的城市。
while True:
    city = input('请输入要查询的城市:')

    # 当用户输入的城市不在要查询的子字典中时,跳出本次循环,继续让用户输入。
    if not city in dic[province]:
        print('输入错误')
        continue

    # 当用户输入的要查询的城市在子字典中时,跳出循环。
    break

# 将用户输入的城市去取出子字典中的指定的城市(键)的值——县级列表
# 然后遍历每个镇县级列表,遍历的的结果是取出县级列表中的每个县名。
for j in dic[province][city]:
    print(j,end=' ')

  

推荐阅读