三级菜单和登录认证程序

   这是刚开始写程序,三级菜单的程序基本是用字典实现,很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

  

 

你可能感兴趣的:(三级菜单和登录认证程序)