Python實現簡單的登錄接口


 1 #!/usr/bin/env python
 2 #-*- coding:utf-8 -*-
 3 
 4 import getpass                                                              #調用getpass模塊,避免用戶輸入的密碼展示在命令行
 5 import time                                                                 #調用time時間模塊
 6 
 7 
 8 def login():                                                                #定義函數login,功能:注冊時使用
 9     print('\033[32m+\033[0m' * 20)
10     print('\033[32m歡迎來到注冊中心!!\033[0m')
11     print('\033[32m+\033[0m' * 20)
12     n = []                                                                  #定義空列表
13     User=input('User:').strip()                                             #定以變量User,記錄用戶輸入
14     Passwd=getpass.getpass('Passwd:').strip()                               #同上
15     n.append(User)                                                          #將User、Passwd添加到n列表里
16     n.append(Passwd)
17     Name=':'.join(n)                                                        #使用join函數將列表轉換成字符串以:號分割
18     UserFile.write('%s \n' % Name)                                          #寫到用戶的文件里
19 
20 while True:                                                                 #定義while循環,只有條件不成立時才會退出循環    
21     UserFile=open('/home/haifeng/python_script/day1/user.txt','r+')         
22     LockFile=open('/home/haifeng/python_script/day1/lock.txt','r+')         #以讀寫的方式打開文件
23     User={}                                                                 #定義一個空字典
24     for Line in UserFile.readlines():                                       #將文件全部一行一行的讀取出來,定義為Line
25         key,value=Line.split(':')                                           #定義字典的key,value 以:分割
26         User[key]= value                                                    #給字典的key賦值,{'alex': '123\n', 'jack': '456\n'}
27     LockUser=[]                                                             #定義一個空列表
28     for a in LockFile.readlines():                                          #將鎖文件里的內容一行一行讀進內存
29         LockLine=a.strip()                                                  #去掉空格
30         LockUser.append(LockLine)                                           #添加到LockUser列表里
31 
32     break_flag=False                                                        #定義一個跳出循環的flag,當子循環要求父循環一起跳出循環時,值為True
33     UserName=input('請輸入用戶名:').strip()                                 #記錄用戶名輸入
34     if len(UserName)==0:                                                    #判斷輸入是否為空,空則跳出當前循環,進入下一次循環
35         print('\033[31m你沒有輸入,請輸入正確用戶名\033[0m')
36         continue
37     elif UserName not in User:                                                    #如果用戶輸入用戶名不在User里,會提示用戶是否注冊新用戶
38         Num=input('\033[31m無效用戶!! 是否注冊新用戶: y or n:\033[0m').strip()    
39         if Num == 'y':                                                            #如果用戶輸入y就是調用上面的login函數注冊新用戶,n則跳出當前循環
40             time.sleep(1)
41             login()
42             print('\033[32m注冊成功!!!\033[0m')
43         else:
44            print('請重新輸入!!!')
45            continue
46     elif UserName in LockUser:                                                    #如果用戶輸入用戶名在LockUser里直接退出
47         print('賬戶已經被鎖定,請聯系管理員進行解鎖!!!')        
48         break
49     else:
50         Num = 1                                                                   #定義計數器
51         for i in range(3):                                                        #for循環三次
52            PassWord=getpass.getpass('請輸入密碼:').strip()                        #提示用戶輸入密碼,為空重新輸入
53            if len(PassWord)==0:
54                print('密碼不能為空!!')
55                continue
56            elif  PassWord in User[UserName]:                                      #匹配用戶名密碼
57               print("\033[32m登錄成功!祝你購物愉快!!!\033[0m")
58               break_flag=True                                                     #登錄成功,退出子循環
59               break
60            else:
61               print('密碼錯誤,三次以后賬號鎖定,你已使用%s次.' % Num)
62            Num += 1                                                               #相反密碼輸入錯誤就會自加1,當Num等於4的時候賬戶鎖定
63            if Num == 4:
64               print('賬戶鎖定')
65               LockFile.write('%s \n' % UserName)                                  #將鎖定用戶寫入LockFile里
66               break_flag=True                                                     #退出子循環
67               break
68         if break_flag:                                                            #判斷子循環是否退出,退出則一起退出
69            break

 


免責聲明!

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



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