模擬登錄:
一、用戶輸入帳號密碼進行登錄
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)