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
