要求:
1.支持多個用戶登錄(把已有的用戶名和密碼存放在一個文件中,鎖定的用戶名存放在另一個文件中)
2.輸入正確的用戶名和密碼,則登錄成功;密碼錯誤,可以重新輸入密碼兩次;用戶名錯誤,可以重新注冊用戶名,也可以重新輸入用戶名和密碼。
3.用戶名輸入正確,密碼錯誤三次后,鎖定用戶名,退出;
4.輸入三次后,退出程序。
代碼如下:
user_pw=open('username_file','r+',encoding='utf_8') #打開存放用戶名和密碼的文件 lock_user=open('lock_file','r+',encoding='utf-8') #打開存放被鎖定用戶的文件 LU=[]#用來存放被鎖定用戶的用戶名 UP_user=[] #用來存放文件中已有的用戶名 UP_pw=[]#用來存放文件中已有用戶的密碼 in_user=[]#存放運行過程中用戶輸入的用戶名,用來判斷用戶輸入某一個用戶名的次數是否超過3次 count=0 #計算用戶的登錄次數 count1=0 #計算用戶輸入密碼的次數 #讀取文件中存放的用戶名和密碼,並存放到列表UP_user和UP_pw中 for line in user_pw.readlines(): u,p=line.split()#把一行的字符串按空格分割成兩個字符串 UP_user.append(u) UP_pw.append(p) #讀取用戶名被鎖定的用戶,存放到列表LU中 for line in lock_user.readlines(): l=line.strip() LU.append(l) #用戶輸入用戶名、密碼少於三次 while count<3: user=input("請輸入用戶名") in_user.append(user) pw=input("請輸入密碼") if user in LU:#判斷輸入的用戶名是否在被鎖定用戶中 print("用戶已鎖定") break if user in UP_user:#輸入的用戶名沒有被鎖定 i=UP_user.index(user)#找到輸入的用戶名在列表中的索引值 if pw==UP_pw[i]:#找到相同索引的密碼判斷和輸入的密碼是否一致 print("登錄成功") break else: print("密碼錯誤") while count1<2:#用來判斷用戶輸入了幾次密碼(一共三次,最開始已經輸入了一次,所以還剩兩次) pw1=input("請重新輸入密碼") if pw1==UP_pw[i]: print("登錄成功") break else: print("密碼錯誤") count1+=1 count=3 break else: print("該用戶名未注冊,注冊請輸入'yes',按任意鍵重新輸入用戶名") a=input() #注冊 if a=='yes': print(user) print(pw) user_pw.write(user+' '+pw+'\n')#把用戶名密碼存放到文件中 UP_user.append(user)#把用戶名和密碼存放到數組中 UP_pw.append(pw) print('注冊成功') count+=1 if count==3: print("您輸入的次數太多") for iu in in_user: if in_user.count(iu)>=3: lock_user.write(iu+'\n')#把輸入超過三次的用戶名鎖定到文件中 print('用戶名'+iu+'已鎖定') break lock_user.closed user_pw.closed
測試結果:
(1)
(2)
(3)
(4)
歡迎各位大神測試,指正!