作业二:多级菜单

(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(),):
print(" %s %s "%(index1,province))
d1[index1] = province
#把省的编号和对应的名称放到字典中
num1 = input("请输入你要查看省的编号:")
if num1.isdigit():
#判断用户输入的是否是数字化编号
if int(num1) > len(d1) or int(num1) < :
print("对不起,你输入的编号有误,请重新输入")
else:
print(d1[int(num1)])
else:
if num1 == "q":
active = False
else:
print("您输入的不是数字编号,请输入正确的数字编号!")
while active:
#键入二级菜单
print("市的编号 市的名称")
for index2,city in enumerate(dic[d1[int(num1)]].keys(),):
print(" %s %s " % (index2, city))
d2[index2] = city
num2 = input("请输入你要查看市的编号:")
if num2.isdigit():
if int(num2) > len(d2) or int(num2) < :
print("您输入的市的编号不对,请重新输入!")
else:
print(d1[int(num1)]," ",d2[int(num2)])
else:
if num2 == "b":
#如果用户输入的是b退出当前循环,调到上一次循环
break
elif num2 == "q":
active = False
else:
print("您输入的编号有误,请输入正确的数字编号")
while active:
#进入三级菜单
print("县区编号 县区名称")
d3 = dic[d1[int(num1)]][d2[int(num2)]]
for index3,place in enumerate(d3,):
print(" %s %s " % (index3, place))
num3 = input("请输入你要查询的县/区的编号:")
if num3.isdigit():
#判断用户输入的字符串是否是数字格式的
if int(num3) > len(d3) or int(num3) < :
print("您输入的查询编号超过范围,请重新输入!")
else:
print(d1[int(num1)], " ", d2[int(num2)]," ",d3[int(num3)-])
else:
if num3 == "b":
break
elif num3 == "q":
active = False
else:
print("您输入的查询编号格式不对,请重新输入!")

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

import sys

account_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 =
retry_limit =
while 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) == :
continue
if username == line.strip():
sys.exit("\033[32:lm用户 %s 已经被锁定!\033[0m" %username) if __name__ == "__main__":
main()  

day1 作业二:多级菜单操作的更多相关文章

  1. Python作业之多级菜单

    作业之多级菜单 菜单实现要求: 1. 列出菜单选择供选择 2. 选择对应内容进入下一级菜单 3. 任何时候都可以选择退出程序或返回上一级菜单 具体代码如下: goods = {'华为':{'A系':{ ...

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

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

  3. day1作业二:多级菜单操作(函数实现)

    作业二:多级菜单 (1)三级菜单 (2)可以次选择进入各子菜单 (3)所需新知识点:列表.字典 要求:输入back返回上一层,输入quit退出整个程序 本示例的三级菜单是一个yaml文件格式,格式如下 ...

  4. day1作业二:多级菜单

        作业二:多级菜单 1.三级菜单 2.可以次选择进入各子菜单 3.所需新知识点:列表.字典 4.打印b回到上一层 5.打印q退出循环 流程图如下: readme: (1)存储三级菜单的字典;设置 ...

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

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

  6. 老男孩python学习之作业二---三级菜单

    因为之前花力气完成了购物小程序的作业 现在做这个三级菜单简直是so easy!! 1.显示省级菜单 2.交互,提示用户输入要查看的省份(退出e) 2.1.用户正确输入列表中的省份 3.显示市级菜单 3 ...

  7. Python学习之编写三级菜单(Day1,作业二)

    作业二:多级菜单 三级菜单 可依次进入各子菜单 在各级菜单中输入B返回上一级Q退出程序 知识点:字典的操作,while循环,for循环,if判断 思路: 1.开始,打印一级菜单让用户进行选择(可以输入 ...

  8. Day1作业---登录接口及多级菜单

    #!/usr/bin/env python # -*- coding:utf-8 -*- # Author:Ma Qing data = { "山东" :{ "济南&qu ...

  9. python作业设计:多级菜单,并可依次进入各级子菜单

    '''作业三:多级菜单 三级菜单 可依次选择进入各子菜单 所需新知识点:列表.字典 ''' data = { "北京":{ "昌平":{ "沙河&qu ...

随机推荐

  1. Educational Codeforces Round 24 A 水 B stl C 暴力 D stl模拟 E 二分

    A. Diplomas and Certificates time limit per test 1 second memory limit per test 256 megabytes input ...

  2. php的错误处理机制

    看tp5源码的,补充下 error_reporting(E_ALL); set_error_handler([__CLASS__, 'appError']); set_exception_handle ...

  3. Filter 介绍

    Filter 可认为是 Servlet 的一种加强版,它主要用于对用户请求进行预处理,也可以对 HttpServletResponse 进行后处理,是个典型的处理链. Filter 也可对用户请求生成 ...

  4. Land of Farms HDU - 5556 二分图匹配

    Farmer John and his brothers have found a new land. They are so excited and decide to build new farm ...

  5. STL源码分析归档

    1) algorithm 2) traits 3) iterator 4) list 5) function 6) rbtree 7) bitset 8) priority_queue 9) hash ...

  6. Linux常用网络工具:路由扫描之traceroute

    之前两篇<Linux常用网络工具:fping主机扫描>和<Linux常用网络工具:hping高级主机扫描>都是关于主机扫描的,本篇介绍Linux下常用的路由扫描工具tracer ...

  7. mysqldump 和 sql命令导入sql文件

    注意:不是进入mysql命令行操作的::: mysqldump -uroot -p --database x3gbk >x3gbk.sql 回车会出发,输入密码; 直接在-p后输入密码,有时候这 ...

  8. 前端PHP入门-009-匿名函数

    想想JavaScript当中是否有这个概念? 所谓匿名,就是没有名字. 匿名函数,也就是没有函数名的函数. 匿名函数的第一种用法,直接把赋数赋值给变量,调用变量即为调用函数. 匿名函数的写法比较灵活. ...

  9. 针对移动设备的CSS3布局

    针对移动设备的CSS3布局 一些专业人士预测五年内移动设备将击败普通电脑成为网页浏览领域的霸主,不管这个预言是否应验,让网页在移动设备上较好的显示已经成为网页设计师和开发者的重要任务,本教程学习用CS ...

  10. 关于Http协议、ASP.NET 核心知识(2)

    简介HTTP (对于http协议的描述我前部分有写,但基于保证文档独立完整性的原则,我再写一遍.反正又不花钱.) 这货的学名叫:超文本传输协议 英文名字:(HTTP,HyperText Transfe ...