python學習-實現用戶密碼登錄,輸錯三次鎖定


作業需求:

  1.   輸入用戶名密碼
  2.   認證成功后顯示歡迎信息
  3.   輸錯三次后鎖定

實現思路:

  1. 判斷用戶是否在黑名單,若在黑名單,則將用戶鎖定
  2. 判斷用戶是否存在,若不存在,提示用戶不存在
  3. 若用戶存在,判斷登錄密碼是否正確,若正確,則歡迎用戶成功登錄,提供用戶三次密碼輸入機會,若三次輸入錯誤,則將賬戶鎖定

方式一:

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
count = 0    #計數器
username = "aaa"  #登錄用戶名
userpassword = "asd"   #登錄密碼

#讀取黑名單用戶
f = open("aaa.txt","r")
file_list = f.readlines()
f.close()
lock= []
name = input("登錄用戶名:")

#判斷用戶是否在黑名單
for i in file_list:
    line = i.strip("\n")
    lock.append(line)
if name in lock:
    print("你的賬戶已鎖定,請聯系管理員。")
else:
#如果用戶沒有在黑名單,判斷用戶是否存在
    if name == username:
    #如果密碼連續輸錯了三次,鎖定賬號
        while count <3:
            password = input("登錄密碼:")
            if name == username and password == userpassword:
                print("歡迎%s!"%name)
                break
            else:
                print("賬號和密碼不匹配")
                count +=1
        else:
            print("對不起,您的賬號連續輸錯三次密碼已被鎖定,請聯系管理員。")
            f = open("aaa.txt","w+")
            li = ['%s'%username]
            f.writelines(li)
            f.close()
    else:
        print("用戶名不存在,請輸入正確的用戶名。")

方式二:

 1 #新建兩個文件,account.txt和account_lock.txt,在account中輸入aaa 123
 2 #其中account.txt采用只讀形式,account_lock.txt則采用讀寫形式
 3 import sys,os
 4 count = 0
 5 name_list = []
 6 while count < 3:
 7     name = input("請輸入用戶名:")
 8     lock_file = open("account_lock.txt","r+")   #讀取黑名單,"r+":打開一個文件用於讀寫,"r":以只讀方式打開文件
 9     lock_list = lock_file.readlines()
10     #.readlines():一次讀取整個文件,並將內容分析成一個行的列表,與.read()一樣
11     #.readline():一次讀取一行,當內存不夠時使用.readline()
12     for lock_line in lock_list:
13         lock_line = lock_line.strip('\n')
14         if name == lock_line:
15             #如果輸入的用戶名位於黑名單,則程序異常退出
16             sys.exit("用戶%s已經被鎖定,請聯系管理員解鎖." %name)
17     #讀取正確的用戶名和密碼
18     user_file = open("account.txt","r")
19     user_list = user_file.readlines()
20     for user_line in user_list:
21         (user,password) = user_line.strip('\n').split()
22         name_list.append(user_line)    #.append():用於在列表末尾添加新的對象
23         print("---------",name_list)
24         #用戶名正確,密碼輸入計數
25         if name == user:
26             i = 0
27             while i<3:
28                 passwd = input("請輸入密碼:")
29                 if passwd == password:
30                     print("歡迎%s登錄"%name)
31                     sys.exit(0)
32                 else:
33                     if i<2:
34                         print("用戶%s密碼錯誤,請重新輸入,還有%d機會."%(name,2-i))
35                 i += 1
36             else:
37                 lock_file.write(name + '\n')
38                 sys.exit("用戶%s輸錯密碼三次,用戶將被鎖定並退出,請聯系管理員解鎖."%name)
39         else:
40             pass
41     else:
42         #用戶名輸入錯誤計數
43         if count < 2:
44             print("用戶%s不存在,請重新輸入,還有%d次機會"%(name,2-count))
45         count += 1
46 else:
47     sys.exit("用戶%s不存在,退出"%name)
48 #關閉已經打開的文件
49 lock_file.close()
50 user_file.close()

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM