| 首先要创建2个txt文本 命名为“a.txt” |
“b.txt” |
| |
|
1 import time
2 def login(): #定义函数login,功能:注册时使用
3 print('-' * 20)
4 print('--欢迎来到注册中心--')
5 print('-' * 20)
6 n = [] #定义空列表
7 User=input('用户:').strip() #定以变量User,记录用户输入
8 Passwd=input('密码:').strip() #同上
9 n.append(User) #将User、Passwd添加到n列表里
10 n.append(Passwd)
11 Name=':'.join(n) #使用join函数将列表转换成字符串以:号分割
12 name.write('%s \n' % Name) #写到用户的文件里
13
14 while True: #定义while循环,只有条件不成立时才会退出循环
15 name=open('a.txt','r+')
16 password=open('b.txt','r+') #以读写的方式打开文件
17 User={} #定义一个空字典
18 for Line in name.readlines(): #将文件全部一行一行的读取出来,定义为Line
19 key,value=Line.split(':') #定义字典的key,value 以:分割
20 User[key]= value #给字典的key赋值,{'alex': '123\n', 'jack': '456\n'}
21 LockUser=[] #定义一个空列表
22 for a in password.readlines(): #将锁文件里的内容一行一行读进内存
23 LockLine=a.strip() #去掉空格
24 LockUser.append(LockLine) #添加到LockUser列表里
25
26 break_flag=False #定义一个跳出循环的flag,当子循环要求父循环一起跳出循环时,值为True
27 UserName=input('请输入用户名:').strip() #记录用户名输入
28 if len(UserName)==0: #判断输入是否为空,空则跳出当前循环,进入下一次循环
29 print('\033[31m你没有输入,请输入正确用户名\033[0m')
30 continue
31 elif UserName not in User: #如果用户输入用户名不在User里,会提示用户是否注册新用户
32 Num=input('\033无效用户!! 是否注册新用户[Y] or [N]:\033').strip()
33 if Num == 'y': #如果用户输入y就是调用上面的login函数注册新用户,n则跳出当前循环
34 time.sleep(1)
35 login()
36 print('\033------注册成功-----\033')
37 else:
38 print('请重新输入!!!')
39 continue
40 elif UserName in LockUser: #如果用户输入用户名在LockUser里直接退出
41 print('账户已经被锁定,请联系管理员进行解锁!!!')
42 break
43 else:
44 Num = 1 #定义计数器
45 for i in range(3): #for循环三次
46 PassWord=input('请输入密码:').strip() #提示用户输入密码,为空重新输入
47 if len(PassWord)==0:
48 print('密码不能为空!!')
49 continue
50 elif PassWord in User[UserName]: #匹配用户名密码
51 print("\033[32m登录成功!祝你生活愉快!!!\033[0m")
52 break_flag=True #登录成功,退出子循环
53 break
54 else:
55 print('密码错误,三次以后账号锁定,你已使用%s次.' % Num)
56 Num += 1 #相反密码输入错误就会自加1,当Num等于4的时候账户锁定
57 if Num == 4:
58 print('账户锁定,请联系管理员进行解锁!!!')
59 password.write('%s \n' % UserName) #将锁定用户写入password里
60 break_flag=True #退出子循环
61 break
62 if break_flag: #判断子循环是否退出,退出则一起退出
63 break