——三级菜单——
我们想实现如上图所示这样的三级菜单,输入第一层的某个省份,可以显示下一层的三个市,然后输入某个市之后,可以再次显示下属区(县)。并且,在任一级输入“B”都能返回上一级,且在任何一级输入“Q”,都能退出。
我们来一步步实现它:
首先,第一层要能打印出“山东”、“江苏”、“河南”这三个省份。即打印这个字典的key。
接下来要求用户输入所选择的省份。
用户输入了省份之后,首先要判断一下这个省份是否在这三个省份之内。若是在的话,要能打印出该省份下的三个市。若是不在,可以打印“请用户重新输入>>>”。
接下来详细再说省在范围内的情况:打印输出三个市之后,要求用户输入所选的市。
如果输入了市之后,同样的判断一下这个市是不是在所属范围内,在的话,打印输出下属的区县,不在的话,请用户重新输入。
这样三级菜单的显示基本已经完成了,在打印输出到区县级别之后,我们提示用户,“已经是最后一层了,按B返回”。
pass的意思就是什么也不做,当输入为“B”时,什么也不做,接下来就返回返回whileTrue的死循环,接着输出打印三个市。
这样我们就能实现,在第三层时输入“B”返回到第二层,接下来再优化一下,实现在第二层若输入“B”,可以返回到第一层:
说明一下这个结构:
首先打印出三个省份,然后用户进行选择输入,在范围内就打印输出三个市,不在就请用户重新输入。
在三个市范围的情况下,请用户选择输入某一个市,这个市在范围内就打印输出下属的区县,不在就请用户重新输入,若是输入"B"则返回至上一级的菜单(省份的菜单)。
若是某个市在范围内的情况下,打印输出所有的下属区县,并且提示用户已到最后一层,若输入"B",则返回至上一级的菜单(市的菜单)。
接下来接续进行优化,我们想要实现在任何一层按"Q"都能退出程序的功能。我们采用的方法是,设置一个退出标志,这个退出标志设置为exit_flag=False,因为我们本来的循环写的都是while True,这时候就修改为 while not exit_flag,在判断里当用户输入的是"Q"时,我们就更改exit_flag = True,这样的话,所有的while循环都不会满足条件,即都不执行,所以就相当于结束了整个程序。
以上就是完整的三级菜单的程序。
我们来检验一下结果:
完整的三级菜单:
从第三次返回至第二层:
从第二层返回至第一层:
在第一层退出:
在第二层退出:
在第三层退出:
网友评论