作业二:多级菜单

(1)三级菜单

(2)可以次选择进入各子菜单

(3)所需新知识点:列表、字典

要求:输入b返回上一层,输入q退出整个程序

思路:三级菜单第一级别是省,第二级别是市,第三级别是县,用户可以根据内容选择要查看的东西,因此要使用while循环来进行操作,要有两层循环,第一层是b负责的,第二层是q负责的,要想退出整个循环,输入q结束整个大的循环,输入b结束内层循环,跳出内层循环之后会继续执行下面的循环。

流程图如下:

上面是程序大概的流程图:

过程:

  (1)首先要有一个字典,存储三级菜单;

  (2)展示一级菜单内容;

  (3)用户输入查看的一级菜单内容;

  (4)展示二级菜单内容;

  (5)用户输入查看二级菜单内容

  (6)展示三级菜单内容;

  (7)用户查看三级菜单相应内容。

代码如下:

import collections
#导入collections用于导入有序字典
dic = collections.OrderedDict()
#有序字典
dic["河南"] = {"南阳":["邓州","南召","西峡","桐柏","新野","方城","镇平","宛城区"],"洛阳":["老城区","孟津县","宜阳县","伊川县","洛宁县","栾川县","洛龙区"],}
dic["湖南"] = {"长沙":["开福区","望城区","岳麓区","芙蓉区","宁乡县","天心区","星沙"],"娄底":["涟源","双峰","冷水江市"],}dic["广东"] = {"广州":["越秀区","花都区","天河区","增城区"],"深圳":["罗湖区","福田区","宝安区","盐田区","龙岗区","龙华区","坪山区"],
}active = True
#标识符
d1 = collections.OrderedDict()
#定义一个空的字典,用户存放一级菜单内容
d2 = collections.OrderedDict()
#定义一个空的有序字典,用于存放二级菜单
d3 = []
#定义一个空的列表,用于存放三级菜单
while active:#进入一级菜单print("省的编号   省的名称")for index1,province in enumerate(dic.keys(),1):print("  %s        %s  "%(index1,province))d1[index1] = province#把省的编号和对应的名称放到字典中num1 = input("请输入你要查看省的编号:")if num1.isdigit():#判断用户输入的是否是数字化编号if int(num1) > len(d1) or int(num1) < 1:print("对不起,你输入的编号有误,请重新输入")else:print(d1[int(num1)])else:if num1 == "q":active = Falseelse:print("您输入的不是数字编号,请输入正确的数字编号!")while active:#键入二级菜单print("市的编号   市的名称")for index2,city in enumerate(dic[d1[int(num1)]].keys(),1):print("  %s        %s  " % (index2, city))d2[index2] = citynum2 = input("请输入你要查看市的编号:")if num2.isdigit():if int(num2) > len(d2) or int(num2) < 1:print("您输入的市的编号不对,请重新输入!")else:print(d1[int(num1)],"      ",d2[int(num2)])else:if num2 == "b":#如果用户输入的是b退出当前循环,调到上一次循环breakelif num2 == "q":active = Falseelse:print("您输入的编号有误,请输入正确的数字编号")while active:#进入三级菜单print("县区编号    县区名称")d3 = dic[d1[int(num1)]][d2[int(num2)]]for index3,place in enumerate(d3,1):print("  %s        %s  " % (index3, place))num3 = input("请输入你要查询的县/区的编号:")if num3.isdigit():#判断用户输入的字符串是否是数字格式的if int(num3) > len(d3) or int(num3) < 1:print("您输入的查询编号超过范围,请重新输入!")else:print(d1[int(num1)], "      ", d2[int(num2)],"      ",d3[int(num3)-1])else:if num3 == "b":breakelif num3 == "q":active = Falseelse:print("您输入的查询编号格式不对,请重新输入!")

上面代码中,我们有三级菜单,相应的也有三个循环,每个循环对应相应的菜单,可以在自己的循环中终止自己的本次循环和系统的所有循环,另外需要注意的是,我们经常使用input()输入数字,在本例中,我们输入字符字母"b"和字符数字,这样的情况如果不加判断就会造成操作,因为字符字母格式是不能够int()的。因此我们首先判断了用户输入的是否是数字。

import sysaccount_file = "user_file"
locked_file = "lock_file"def deny_account(username):print("您的用户已经被锁定!")with open(locked_file,"a") as deny_f:deny_f.write("\n" + username)def main():retry_count = 0retry_limit = 3while retry_count < retry_limit:username = input("\033[32:lm请输入用户名:\033[om")with open(locked_file,"r") as lock_f:#采用with的文件打开方式,防止忘记f.close()关闭文件"""
            lines = []for line in lock_f.readlines():lines.append(line.strip())if username in lines:"""
            for line in lock_f.readlines():if len(line) == 0:continueif username == line.strip():sys.exit("\033[32:lm用户 %s 已经被锁定!\033[0m" %username)if __name__ == "__main__":main()  

转载于:https://www.cnblogs.com/gengcx/p/6834067.html

day1 作业二:多级菜单操作相关推荐

  1. 第一天作业二 三级菜单的实现

    第一天作业二 三级菜单的实现 这个作业花了一定的时间,主要是卡在循环时显示不同的问题. #!/usr/bin/env python # -*-conding:utf-8-** # __Author__ ...

  2. day1作业二:多级菜单操作

    作业二:多级菜单 (1)三级菜单 (2)可以次选择进入各子菜单 (3)所需新知识点:列表.字典 要求:输入back返回上一层,输入quit退出整个程序 思路: (1)首先定义好三级菜单字典: (2)提 ...

  3. PYTHON作业----编写多级菜单

    # -*- coding: utf-8 -*-#-*- 2017/07/13 -*-#-*- Create by ChaiMeng#多级菜单 import sys multi_city = {'安徽省 ...

  4. django权限二(多级菜单的设计以及展示)

    多级权限菜单设计级标题栏 我们现在只有数据展示,要进入其他url还需要手动的输入路径,非常的麻烦,所以我们要设计 一个导航栏以及侧边多级菜单栏,这个展示是通过stark组件的设计的增删改查页面,而 每 ...

  5. Day1作业二查找特定名称文件

    作业二: 遍历"Day1-homework"目录下文件: 找到文件名包含"2020"的文件: 将文件名保存到数组result中: 按照序号.文件名分行打印输出. ...

  6. 如何利用Python和win32编程避免重复性体力劳动(二)——菜单操作:GetMenu,GetSubMenu,GetMenuItemID以及wParam的HIWORDLOWORD

    本博客正逐步迁移至OrangeCube四次元 请移步至这里以获得更加的排版和阅读体验,谢谢您 Part 2:菜单操作 有了句柄,我们就可以操作FaceGen了!嗯,要先打开文件,File→Open,然 ...

  7. 老男孩Day1作业(二):编写多级菜单

    要求:编写多级菜单 1.三级菜单 2.可依次进入各子菜单 3.菜单能够回到上一级 4.用到知识点:字典.列表.多层循环.函数 1)编写思路 编写思路参考下面GitHub链接中的流程图 https:// ...

  8. java程序设计与j2ee中间件技术/软件开发技术(III)-大作业-采用MVC模式实现商品信息的查询显示(可以模糊查询)、增加和删除功能,商品表自拟,实现简单菜单操作和分页显示

    目录 1.题目说明 2.实验设计 2.1 表设计 2.2 工程结构 3.运行界面截图与说明 4.小结 附录:源代码 src/main/java src/main/java/bean Goods.jav ...

  9. 福师2021计算机应用基础,2021福师《计算机应用基础》在线作业二【满分答案】...

    2021福师<计算机应用基础>在线作业二[满分答案]奥鹏作业满分答案 福师<计算机应用基础>在线作业二-0001 试卷总分:100  得分:100 一.单选题 (共 40 道试 ...

最新文章

  1. java流程控制图_Java流程控制
  2. nginx正向代理和反正代理区别
  3. 病毒与故障:漫谈计算机软件的故障应对
  4. WPF 的拖拽操作(DragDrop)
  5. 如何使用WCF调试器WcfTestClient.exe
  6. 顺丰快递单号的规律_顺丰快递顺丰快递查询单号查询
  7. openstack 功能_OpenStack Ocata的新功能
  8. 数据恢复 FinalData 3.0 testdisk
  9. 移动通信原理B-------课后作业1
  10. 下行物理信道rs_LTE下行物理信道与物理信号
  11. switch错误码2016-0247 无法识别SD卡解决方案(猴子也能看懂的简单命令行操作,无需格式化!)
  12. oracle 11g DG 物理搭建 DG切换模式
  13. 为什么电梯安装企业项目接得更多,利润更少?
  14. MyEclipse2015破解安装与使用
  15. Win10 键盘输入法消失后如何恢复
  16. vhosts.conf域名配置
  17. Unity虚拟相机CinemaChine
  18. 模板模式(C/C++实现)
  19. Windows 钩子,基本的dll注入
  20. 游戏开发中的有限状态机(FMS)

热门文章

  1. python百度语音实时识别成文字_python 语音合成
  2. 公司内部多表查询 sql在实现类的应用
  3. PHP编译为静态库,Linux下将Tinyxml编译为静态库
  4. android通知栏打开actvity,Android实现点击通知栏后,先启动应用再打开目标Activity...
  5. 百度小程序--支付功能
  6. 今天 CSDN 编辑器的一个惊人的变化
  7. 记录低频的混沌电压波形-双晶体管混沌信号
  8. 英飞凌AI电磁越野组浅析
  9. 使用高精度旋转编码器BH60测量步进电机转动角度
  10. 泡椒java_吃货联盟 源代码 Java初级小项目