1.python之編寫登陸介面
阿新 • • 發佈:2020-12-26
作業:編寫登陸介面
- 輸入使用者名稱密碼
- 認證成功後顯示歡迎資訊
- 輸錯三次後鎖定
def islocked(username): #驗證帳號是否被鎖定 with open("lock.txt",'r') as f: #開啟lock.txt檔案 users = [] #定義一個空列表,用於儲存所有的帳號 lines = f.readlines() #讀取檔案資訊,放入列表易於操作 for line in lines: users.append(line.strip().split(':')[0]) #依次讀取列表中的元素,按:切片,追加到users列表 if username in users: #如果帳號存在users列表中,提示帳號已被鎖定 print("你輸入的帳號%s已被鎖定,請聯絡管理員"%username) else: #如果帳號不存在users列表中,則呼叫isregister函式,確認是否註冊 isregister(username) def isregister(username): #驗證帳號是否註冊 with open("user.txt",'r') as e: register_user = [] user_lines = e.readlines() for user_line in user_lines: register_user.append(user_line.strip().split(':')[0]) if username in register_user: print("正在登入,請稍候...") else: print("Sorry %s還沒有註冊,請註冊之後登入"%username) message = input("你想註冊一個帳號(%s)嗎?『yes|no:"%username) if message =='yes': register(username) else: sys.exit() def register(username): #註冊帳號 _password = input("註冊帳號:%s,請輸入你的註冊密碼:"%username) with open("user.txt",'a') as p: info = f"{username}:{_password}\n" p.writelines(info) print("註冊完成%s"%username) def userpassword(username): #輸入密碼,返回給呼叫函式 print("你要登入的帳號為:%s"%username) _password=input("請輸入你的密碼:") return _password def login(username): #使用者登入函式 islocked(username) i=0 with open("user.txt",'r') as o: dic = {} user_lines = o.readlines() for user_line in user_lines: (user, passwd) = user_line.strip().split(":") dic[user] = passwd while i <3: _password = userpassword(username) if dic[username] == _password: print("Hell,%s歡迎回來"%username) break else: i += 1 #密碼失敗一次,+1,失敗3次呼叫鎖定函式 if i ==3: add_locked_user(username) print("對不起,你輸入的次數太多,使用者名稱已被鎖定,請聯絡管理員") break def add_locked_user(username): #鎖定函式 with open("user.txt",'r') as x: lines = x.readlines() _user = [] for line in lines: _user.append(line.strip().split(":")[0]) num = _user.index(username) #根據帳號找到鎖定帳號的位置 with open ("lock.txt",'a') as a: a.write("%s\n" %lines[num]) #將鎖定帳號資訊追加到lock.txt檔案 with open("user.txt",'w') as w: #開啟user.txt檔案, del lines[num] #將鎖定帳號刪除 w.writelines(lines) #將其餘帳號資訊覆蓋寫入user.txt login(username=input("請輸入你要登入的帳號:"))
user.txt jack:123456 lily:abc123 cici:xyz123
lock.txt jjjj:12345 iiii:123455 oppo:111111