作业二:多级菜单

(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. poj1659 Frogs' Neighborhood

    Frogs' Neighborhood Time Limit: 5000MS   Memory Limit: 10000K Total Submissions: 10239   Accepted: 4 ...

  2. Filter 介绍

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

  3. bzoj 1513 POI2006 Tet-Tetris 3D 二维线段树+标记永久化

    1511: [POI2006]OKR-Periods of Words Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 351  Solved: 220[S ...

  4. click和mousedown的区别

    $("button").mousedown(function(){ $("p").slideToggle(); }); 当鼠标指针移动到元素上方,并按下鼠标按键 ...

  5. UVA 10479 The Hendrie Sequence

    https://vjudge.net/problem/UVA-10479 打表找规律: 1.根据n可以确定第n项在上表中第i行 2.减去前i-1行,就得到了n在第i行的第j个 3.第i行的规律:1个i ...

  6. UVA 12063 Zeros and Ones

    https://vjudge.net/problem/UVA-12063 题意: 统计n为二进制数中,0和1相等且值为m的倍数的数有多少个 dp[i][j][k] 前i位二进制 有j个1 值模m等于k ...

  7. webDriver检索table数据

    最近在做爬虫相关工作,用到了webdriver,记录一些遇到的问题和解决方法: 如何查找 table中的行 例如: <div id="a"> <table cla ...

  8. 引用类型 ( 对象定义 )——Array 类型

    本文地址:http://www.cnblogs.com/veinyin/p/7607293.html  一个数组中可以存储不同类型的值,可以混合存储数字.字符串.对象等 1 创建数组 1.1 构造函数 ...

  9. 利用Addon Domain和A记录使两个域名同时指向同一个网站

    今天碰到这样的需求:已有网站A.com, 以及新注册的域名B.net, 现需要将B.net指向与A.com相同的内容. 这里提出的方法是在空间后台添加Addon domain, 以及在域名B.net后 ...

  10. div遮罩实现禁用鼠标(click、hover等)事件

    这两天在帮老师做网页,今天想实现在一块区域内禁止鼠标的各种事件,本来是想在框架模板的js文件里去修改,但是改代码的时候有点凌乱...感觉应该自己把问题想复杂了. 所以想了想要是能实现在一个区域内(如: ...