第一週 模擬登錄、三級菜單


模擬登錄:
一、用戶輸入帳號密碼進行登錄
2.用戶信息保存在文件中
三、用戶密碼輸入錯誤三次後鎖定用戶
with open('userinfo',mode='w+',encoding='utf-8')as f:
    f.write('1251865477\n123456')

i=0
li=[]
while i<3:
    username =input('請輸入你的帳號:')
    password =input('請輸入你的密碼:')
    with open('userinfo', mode='r+', encoding='utf-8')as f:
        for line in f:
            li.append(line)

    if username.strip() == li[0].strip() and password == li[1].strip():
        print('登錄成功')
        break
    else:
        print('用戶名或密碼錯誤,請重試')
    i+=1

else:
    print('用戶密碼輸入錯誤三次,帳號已鎖定')
三級菜單:
一、運行程序輸出第一級菜單
二、選擇第一菜單某項,輸出二級菜單,同理輸出三級菜單
三、菜單數據保存在文件中
四、讓用戶選擇是否要退出
五、有返回上一級菜單功能
ps:用到字典、列表,while循環

menu = {
'北京':{
'海淀':{
'五道口':{
'soho':{},
'網易':{},
'google':{}
},
'中關村':{
'愛奇藝':{},
'汽車之家':{},
'youku':{},
},
'上地':{
'百度':{},
},
},
'昌平':{
'沙河':{
'老男孩':{},
'北航':{},
},
'天通苑':{},
'回龍觀':{},
},
'朝陽':{},
'東城':{},
},
'上海':{
'閔行':{
"人民廣場":{
'炸雞店':{}
}
},
'閘北':{
'火車站':{
'攜程':{}
}
},
'浦東':{},
},
'山東':{},
}
with open('data',mode='r+',encoding='utf-8')as f:
    a=f.read()
    # print(a,type(a))
    menu=eval(a) #str轉化爲dic
    print(menu)
# 1)

current_level =menu
parent_level=[] #保存全部父集,最後一個元素永遠是父級

while True:
    for key in current_level:
        print(key) #展現 北京、上海、山東

    choice= input('>>>') #用戶輸入 第一層
    if choice in current_level:
        parent_level.append(current_level) #在進入下一級以前,把當前層的父集保存下來
        current_level=current_level[choice] #改爲子層 繼續while循環

    elif choice=='b': #返回上一級
        if parent_level: #若是父集不爲空
            current_level=parent_level.pop()  # 刪掉最後一個元素,並將值返回current_level循環
    elif choice =='q':
        break
    else:
        print('輸入有誤')

 

# 2)
def three_menu(dic):
    while 1:
        for k in dic.keys():
            print(k)     #北京 上海 山東

        key = input('>>>').strip() #北京

        if key =='b' or key == 'q': #b爲返回上一級、q爲退出
            return key
        elif key in dic.keys() and dic[key]:

            ret = three_menu(dic[key])
            if ret == 'q':
                return 'q'

        elif (not dic.get(key,'沒有這個地區')) or (not dic[key]):
            continue


three_menu(menu)
相關文章
相關標籤/搜索