python編寫登錄接口(第一天)


作業:編寫登錄接口

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

 

針對此實例書寫內容具體如下:

賬戶文件account.txt內容如下:


 

Tamir  123

test1  123

test2  123

test3  123

 


 

賬戶鎖定文件account_lock.txt默認為空

 

針對賬號文件(account.txt)里的用戶進行判斷並鎖定,針對用戶和密碼各有三次錯誤重試機會。

1.流程圖如下:

代碼如下:

 1 # -*- coding:utf-8 -*-
 2 # Author:Steven Kang
 3 
 4 import os,sys,getpass  #導入os,sys,getpass 模塊
 5 u = 0                   #用戶的循環次數
 6 while u < 3:
 7     username = input("請輸入您的用戶名:")           #使用input 讓用戶輸入並賦值給username變量
 8     lock_file = open('account_lock.txt','r+')             #打開account_lock文件,權限是讀取更新,並賦值給lock_f變量
 9     lock_list = lock_file.readlines()                    #使用.readlines的方法逐行讀取account_lock文件,並賦值給lock_list變量
10 
11     for lock_line in lock_list:                      #使用for循環讀取account_lock的內容
12         lock_line = lock_line.strip('\n')            #使用.strip()的方法去點換行符
13         if username == lock_line:
14             print('用戶 %s 已經鎖定,請聯系您的系統管理員' % username)  #如果存在打印輸出
15             sys.exit(1)                                    #跳出循環
16     user_file = open('account.txt','r')                    #打開account文件,權限是讀取更新,並賦值給user_f變量
17     user_list = user_file.readlines()                    #使用.readlines的方法逐行讀取account文件,並賦值給user_list變量
18     for user_line in user_list:                      #使用for循環讀取account的內容
19         (user,passwd) = user_line.strip('\n').split()   #分別獲取賬號和密碼信息
20         if username == user:                         #使用if判斷用戶輸入的用戶是否在normal_user中存在
21             p = 0                                    #輸入密碼的循環次數
22             while p < 3:                            #只要用戶登錄異常不超過3次就不斷循環
23                 password = getpass.getpass('請輸入您的密碼:')       #使用getpass模塊的.getpass方法讓用戶輸入密碼(輸入的時候不會顯示)
24                 if password == passwd:              #使用if判斷用戶輸入的密碼在normal_user中是否存在(相等)
25                     print('歡迎 %s 登錄系統' %username)              #用戶名密碼全部相等(存在)打印歡迎登錄信息
26                     sys.exit(0)                         #跳出循環
27                 else:
28                     if p != 2:
29                         print('對不起,%s 的密碼錯誤,請重新輸入,您還有 %d 次機會'%(username,2 - p))
30                 p += 1                              #密碼輸入錯誤后,循環值增加1
31             else:
32                 lock_file.write(username + '\n')      #用戶名密碼輸入次數超過3次的用戶添加到account_lock文件中
33                 #lock_f.write('%s \n' %username)
34                 sys.exit('對不起 %s 用戶已經鎖定,請聯系管理員'% username)
35         else:
36             pass                                   #當用戶沒匹配時,跳過並繼續循環
37     else:
38         if u != 2:                                 #i=2時,是最后一次機會,不用在提示還剩余0次機會了
39             print('對不起,%s 輸入錯誤,請重新輸入,您還有 %d 次機會' %(username, 2 - u))
40     u += 1                                         #當用戶輸入錯誤時,循環值增加1
41 else:
42     sys.exit('因為您的錯誤輸入,程序已經退出,請重新運行')   #用戶輸入三次錯誤后,異常退出
43 lock_f.close()          #關閉lock_f文件

 


免責聲明!

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



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