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
