一、编程题目
现实生活中我们经常要用到二级菜单或者多级菜单,下面我们以一个信息系统中关于户籍省市的选择利用字典来实现一个二级菜单,要求以下面的内容来定义二级菜单: 广东省:广州市、珠海市、东莞市、惠州市、汕头市、湛江市、河源市、梅州市 湖南省:长沙市、株洲市、郴州市、湘潭市 湖北省:武汉市、鄂州市 四川省:成都市、都江堰市、乐山市 云南省:丽江市、大理市、西双版纳州 甘肃省:兰州市、天水市、武威市 陕西省:西安市、咸阳市、渭南市 实现该二级菜单的第一级省份的选择,选择省份后再根据该选择进行市的选择,最出你的选择结果。进入最后一层选择后,按住‘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退出整个程序: