这是刚开始写程序,三级菜单的程序基本是用字典实现,很low,以后学习了其他更好的东西,我会继续上传,然后争取在我水平高深之后,把这个简单的东西实现的狠高大上。
一,三级菜单
要求:
可依次选择进入各子菜单
可从任意一层往回退到上一层
可从任意一层退出程序
所需新知识点:列表、字典'''
只用一个while循环,且整体代码量少于15行
数据结构如下:
menu = { '北京':{ '海淀':{ '五道口':{ 'soho':{}, '网易':{}, 'google':{} }, '中关村':{ '爱奇艺':{}, '汽车之家':{}, 'youku':{}, }, '上地':{ '百度':{}, }, }, '昌平':{ '沙河':{ '老男孩':{}, '北航':{}, }, '天通苑':{}, '回龙观':{}, }, '朝阳':{}, '东城':{}, }, '上海':{ '闵行':{ "人民广场":{ '炸鸡店':{} } }, '闸北':{ '火车战':{ '携程':{} } }, '浦东':{}, }, '山东':{}, }
menu = { '北京':{ '海淀':{ '五道口':{ 'soho':{}, '网易':{}, 'google':{} }, '中关村':{ '爱奇艺':{}, '汽车之家':{}, 'youku':{}, }, '上地':{ '百度':{}, }, }, '昌平':{ '沙河':{ '老男孩':{}, '北航':{}, }, '天通苑':{}, '回龙观':{}, }, '朝阳':{}, '东城':{}, }, '上海':{ '闵行':{ "人民广场":{ '炸鸡店':{} } }, '闸北':{ '火车战':{ '携程':{} } }, '浦东':{}, }, '山东':{}, } current_layer = menu parent_list = [] while True: for key in current_layer: print(key) choice = input("请输入地址,或者按b返回上一层,按q退出程序>>>:").strip() if len(choice) ==0:continue if choice in current_layer: parent_list.append(current_layer) #进入下一层之前保存当前层 current_layer =current_layer[choice] #将子层赋值给动态字典 elif choice == 'b': if len(parent_list) !=0: current_layer =parent_list.pop() #取出列表的最后一个值,并返回这个值 else:print("已经是最后一层") elif choice =='q':break else: print("您所输入的地址不存在,请重输")
二,登录认证程序
要求:
基础需求:
让用户输入用户名密码
认证成功后显示欢迎信息
输错三次后退出程序
升级需求:
可以支持多个用户登录 (提示,通过列表存多个账户信息)
用户3次认证失败后,退出程序,再次启动程序尝试登录时,还是锁定状态(提示:需把用户锁定的状态存到文件里)
vip_username = ['james','wade','park','harden'] vip_password = ['123456','234567','345678','456789'] count = 0 while True: username =input("请输入你的用户名:") if username not in vip_username: print("您所输入的用户不存在") continue else: with open("lock_name.txt", 'r+') as userlock: name_list = userlock.read() if username in name_list: print(username + "该用户已经被锁定") break password = input("请输入你的密码:") if username==vip_username[0] and password ==vip_password[0]: print("恭喜"+username+"登陆成功") break elif username==vip_username[1] and password ==vip_password[1]: print("恭喜" + username + "登陆成功") break elif username == vip_username[2] and password == vip_password[2]: print("恭喜" + username + "登陆成功") break elif username == vip_username[3] and password == vip_password[3]: print("恭喜" + username + "登陆成功") break else: count+=1 print('用户密码错误,请你仔细核对') if count>=3: with open("lock_name.txt","a") as worryname: worryname.write(username+","+"\n") print("输入密码错误次数过多,%s已经被锁定"%username) break