python编程:字典的典型应用:二级(多级)菜单,实现户籍省市的多层级选择

一、编程题目

   现实生活中我们经常要用到二级菜单或者多级菜单,下面我们以一个信息系统中关于户籍省市的选择利用字典来实现一个二级菜单,要求以下面的内容来定义二级菜单:

    广东省:广州市、珠海市、东莞市、惠州市、汕头市、湛江市、河源市、梅州市
    湖南省:长沙市、株洲市、郴州市、湘潭市
    湖北省:武汉市、鄂州市
    四川省:成都市、都江堰市、乐山市
    云南省:丽江市、大理市、西双版纳州
    甘肃省:兰州市、天水市、武威市
    陕西省:西安市、咸阳市、渭南市

   实现该二级菜单的第一级省份的选择,选择省份后再根据该选择进行市的选择,最出你的选择结果。进入最后一层选择后,按住‘b’字符返回上一层,按‘q’字符程序。
以简单的三个省份选择为例,效果如下图所示:

     


二、代码实现

      1、定义数据字典,用于存储省市信息数据

infos = {'广东省':['广州市','珠海市','东莞市','惠州市','汕头市','湛江市','河源市','梅州市'],
         '湖南省':['长沙市','株洲市','郴州市','湘潭市'],
          '四川省':['成都市','都江堰市','乐山市'],
          '云南省':['丽江市','大理市','西双版纳州'],
          '甘肃省':['兰州市','天水市','武威市'],
          '陕西省':['西安市','咸阳市','渭南市']
        }

  2、定义两个while循环,用于分别让用户选择省信息和市信息

running = True
while running:
    for key in infos.keys():
        print(key)
    province = input('请选择省份:>>')

    if province == 'q':
        running = False
        break

    citys = []
    for key,value in infos.items():
        if province == key:
            for v in infos[key]:
                print(' ',v)
                citys.append(v)
    if not citys:
        print('你选择的省份有误,请重新选择!')
        continue

    city_running = True
    while city_running:
        city = input('请选择城市:>>')
        if city in citys:
            print('你选择的城市是:',province,city)
        else:
            print('你选择的城市有误,请重新选择!')
            continue

        b = input('最后一层,按b返回>>:')
        if b == 'b':
            city_running = False
        elif b == 'q':
            city_running = False
            running = False

        注意上面代码中的两个while循环都使用了一个变量来控制循环,这是因为方便在循环中通过控制该变量的值来跳出循环,这样不管里面有多少层循环多可以。否则直接while True,当有多层循环时,在最里面的循环中无法很好的跳出所有的循环或者跳出某个循环。

        其次,要判断用户输入的数据是否在字典中存在,如果输入的不存在要提示重新输入,这里使用到了循环的continue关键词,表示进入下一次循环,后面的代码不执行。

        这个题目主要就是考察循环和对字典的访问,明白逻辑后不难实现。


三、测试

        1、程序运行后,显示有哪些省份:

       2、输入一个省份名称,记得不能输错

         

        3、接着要输入城市的名称,在列出的选项中选择一个:

        

         4、输入b返回省份信息选择:

   5、输入q退出整个程序:

        

 

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阳光宅男xxb

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值