用户登录验证,记录一下,还需要修改黑名单不合理
1 #!/usr/bin/env python3
2 '''
3 需求:编写登录接口
4 1、输入用户名和密码
5 2、验证用户密码成功后输出欢迎消息
6 3、3次没有验证通过锁定账户
7 '''
8 # user = {'test1':'123','test2':'234','test3':'345'}
9 #将文件内容转换为字典
10 with open('user_pass_sql', 'r')as f:
11 user = dict(line.strip().split(':') for line in f if line)
12 # print(user)#打印字典user
13 f.close()
14
15 # print(user.keys())#打印字典user的key
16 # print(user.values())#打印字典user的values
17 user_input=input('Name:').strip()#用户输入账户
18 user_passwd=input('Passwd:')#用户输入密码
19
20 # fblack = open('black_list','r')#打开黑名单文件
21 # for len(user_input) == fblack.readlines():#判断用户是否在黑名单
22 # print('Account lockout!!!')
23 for line in open('black_list','r'):
24 if user_input == line.strip():
25 print('Account lockout!!!')
26 break
27 # fblack.close()#关闭文件
28 if len(user_input) == 0:#判断用户输入是否为空
29 print('Users cannot be null!!')
30 break
31 else:
32 # if list(user.keys())[a] == user_input and list(user.values())[a] == user_passwd:
33 if user_input in user and user_passwd == user[user_input]:#判断用户名和密码是否一致
34 print('Login successfully!Welcome!!!')
35 else:
36 #用户或者密码错误进入循环2次
37 for i in range(2):
38 print('User or Passwd error!!')
39 user_input = input('Name:').strip()
40 user_passwd = input('Passwd:')
41 if user_input in user and user_passwd == user[user_input]:#判断用户输入的用户名和密码时候和文件中匹配
42 print('Login successfully!Welcome!!!')
43 break#跳出循环
44 else:
45 black_list = open('black_list','a')#打开文件模式追加
46 black_list.write('\n')
47 black_list.write(user_input) #3次错误之后写入黑名单
48 black_list.close()#关闭文件
49 print('Account lockout!!!')
重新写了一版:
1 #!/usr/bin/env python3
2 def black_list():
3 with open("black_list", "a") as black:
4 black.write('\n' + user_input.strip()) #将变量user_input写到文件中,\n为换行
5
6 with open('user_passwd', 'r') as f: #打开用户密码文件
7 user = dict(line.strip().split(":") for line in f if line)#将文件内容转换为字典
8
9 passwd_error = [] #创建密码错误列表,密码错误一次将用户写入列表
10 user_does_not_exist = [] #创建不存在用户列表,不存在用户写入列表
11
12 for i in range(10): #循环10次
13 user_input = input("Name:").strip() #输入账号,strip去除两侧空格
14 user_passwd = input("Passwd:").strip() #输入密码,strip去除两侧空格
15 with open("black_list","r") as black: #打开黑名单文件
16 if user_input in black: #判断用户是否在黑名单中
17 print("◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇\n"
18 "◇◇◇◇◇◇◇◇◇账户被锁定,请与管理员联系!!◇◇◇◇◇◇◇◇\n"
19 "◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇\n")
20 break #退出循环
21 elif len(user_input) == 0: #判断用户输入是否为空格
22 print("◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇\n"
23 "◇◇◇◇◇◇◇◇◇◇◇◇用户名不能为空!!◇◇◇◇◇◇◇◇◇◇◇\n"
24 "◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇\n")
25 continue #退出本次循环
26 else:
27 if user_input in user and user[user_input] == user_passwd:#判断用户名和密码是否一致
28 print("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n"
29 "※※※※※※※※※※※※※欢迎登陆!!※※※※※※※※※※※※※※※\n"
30 "※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n")
31 break
32 elif user_input not in user: #判断用户是都存在
33 print("◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇\n"
34 "◇◇◇◇◇◇◇◇◇◇◇◇用户不存在,请重试!!◇◇◇◇◇◇◇◇◇◇◇◇\n"
35 "◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇\n")
36 user_does_not_exist.append(user_input) #用户不存在就写入用户不存在列表中
37 if user_does_not_exist.count(user_input) == 5: #统计用户不在列表中不存在的用户次数,超过5次锁定
38 print("☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆\n"
39 "☆☆☆☆☆☆☆☆☆☆☆尝试次数过多,账户锁定!!☆☆☆☆☆☆☆☆☆☆☆\n"
40 "☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆\n")
41 black_list() #调用函数black_list
42 break
43 else:
44 print("☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆\n"
45 "☆☆☆☆☆☆☆☆☆☆☆☆☆密码错误!!☆☆☆☆☆☆☆☆☆☆☆☆☆☆\n"
46 "☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆\n")
47 passwd_error.append(user_input) #将密码错误用户写入密码错误列表中
48 if passwd_error.count(user_input) == 3: #统计密码错误用户是否超过3次
49 print("〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓\n"
50 "〓〓〓〓〓〓〓〓〓〓密码错误3次,账户锁定,请联系管理员!!〓〓〓〓〓〓〓〓〓〓\n"
51 "〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓\n")
52 black_list() #调用函数black_list
53 break
54 else:
55 continue #退出当前循环
56 else:
57 print("〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓\n"
58 "〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓尝试次数过多!!〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓\n"
59 "〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓\n")
再修改一下:
1 #!/usr/bin/env python3
2 def black_list():
3 with open("black_list", "a") as black:
4 black.write('\n'+user_input.strip()) #将变量user_input写到文件中,\n为换行
5
6 with open('user_passwd', 'r') as f: #打开用户密码文件
7 user = dict(line.strip().split(":") for line in f if line)#将文件内容转换为字典
8
9 passwd_error = [] #创建密码错误列表,密码错误一次将用户写入列表
10 user_does_not_exist = [] #创建不存在用户列表,不存在用户写入列表
11
12 break_flag = False #默认设置为False,用来退出多层循环
13 continue_flag = False
14 for i in range(10): #循环10次
15 user_input = input("Name:").strip() #输入账号,strip去除两侧空格
16 user_passwd = input("Passwd:").strip() #输入密码,strip去除两侧空格
17 with open("black_list","r") as black: #打开黑名单文件
18 for line in black:
19 if user_input == line.strip(): #判断用户是否在黑名单中
20 Tips = '账户%s被锁定,请与管理员联系!'%user_input #定义字符串,将用户输入变量带入字符串,%s代替用户输入
21 print(Tips.center(30,'*')) #字符串center方法,字符串居中,30为总长度,空白处用*代替
22 break_flag = True #将break_flag的值重新定义
23 break #退出循环
24 if break_flag == True: #判断break_flag的值是否为True
25 break
26 if len(user_input) == 0 or len(user_passwd) == 0: #判断用户输入是否为空格
27 Tips = '用户名或密码不能为空!'
28 print(Tips.center(30,'*'))
29 continue #退出本次循环
30 if user_input in user and user[user_input] == user_passwd:#判断用户名和密码是否一致
31 Tips = '欢迎用户%s登录系统'%user_input
32 print(Tips.center(30,'*'))
33 break
34 elif user_input not in user: #判断用户是都存在
35 Tips = '用户%s不存在,请重试!'%user_input
36 print(Tips.center(30,'*'))
37 user_does_not_exist.append(user_input) #用户不存在就写入用户不存在列表中
38 if user_does_not_exist.count(user_input) == 5: #统计用户不在列表中不存在的用户次数,超过5次锁定
39 Tips = '尝试次数过多,账户%s锁定!'%user_input
40 print(Tips.center(30,'*'))
41 black_list() #调用函数black_list
42 break
43 else:
44 Tips = '密码错误!'
45 print(Tips.center(30,'*'))
46 passwd_error.append(user_input) #将密码错误用户写入密码错误列表中
47 if passwd_error.count(user_input) == 3: #统计密码错误用户是否超过3次
48 Tips = '密码错误3次,账户%s锁定,请联系管理员!'%user_input
49 print(Tips.center(30,'*'))
50 black_list() #调用函数black_list
51 break
52 else:
53 continue #退出当前循环
54 else:
55 Tips = '尝试次数过多!'
56 print(Tips.center(30,'*'))