前言:
1、用户输入账户和密码
2、认证成功后打印欢迎信息
3、密码输入三次错误锁定用户
思路:
通过将用户名和密码用字典保存在变量user_dic中,并将用户名以列表的形式保存到变量user_list,变量black_list以列表形式将黑名单文件black_user.log中黑名单用户进行储存,然后对用户输入的用户名进行判断,如果用户名为在黑名单black_list列表中,则提示用户输入的用户名已经被禁用,并退出程序;如果用户名不为黑名单用户且不存在user_dic列表中时,提示用户重新输入;如果用户输入的用户名在user_dic列表中时,则提示用户输入密码。
验证用户输入的密码,如果密码错误,则提示用户重新输入,连续三次输错密码将该用户禁用并保存在黑名单文件black_user.log中;如果密码验证成功,打印欢迎信息。
实现代码:
1 #!/usr/bin/env python3
2 # -*- coding: utf-8 -*-
3
4 black_list = [] # 定义一个黑名单列表,将black_user.log文件中的黑名单用户保存到列表
5 luck_num = 0 # 密码输入次数计数初始为0,累计三次输错将用户拉黑
6 user_dic = {'lanten': '12345', 'gaotong': 'gt12345', 'tom': '147258', 'bigban': 'bigban123', 'angel': '34&67'} # 定义一个用户名密码字典
7 user_list = list(user_dic.keys()) # 将用户名以列表的形式显示出来
8
9 f = open('black_user.log', 'r') # 以只读方式打开黑名单文件black_user.log
10
11 for line in f.readlines(): # 循环黑名单用户
12 line = line.strip() # 移除用户名头尾空格
13 black_list.append(line) # 将黑名单用户写入black_list列表
14
15 f.close()
16
17 while True:
18 user = input("请输入用户名:").strip() # 让用户输入用户名,并去掉头尾的空格
19 if user in black_list: # 判断输入的用户名是否为黑名单用户
20 print('此用户已经被禁用,请尝试其他用户')
21 break
22 elif user not in user_list: # 判断用户输入是否存在user_list列表
23 print("您输入的用户名不存在,请重新输入!")
24 else: # 如果用户输入正确的用户名后执行
25 while True:
26 password = input("请输入用户密码:").strip() # 让用户输入密码,,并去掉头尾的空格
27 if password != user_dic[user]: # 判断输入的密码如果与用户名对应的不一致,则提示用户重新输入,并累计超过三次输入错误后,将该用户加入黑名单文件
28 print("密码输入错误,请重新输入")
29 luck_num += 1
30 if luck_num >= 3:
31 f2 = open("black_user.log", "a") # 以追加方式打开黑名单文件black_user.log
32 f2.write(user + '\n')
33 f2.close()
34 print("该账户连续三次输入错误密码,%s用户已被禁用,请联系客服:10086" % user)
35 quit() # 退出整个程序
36 else: # 如果用户输入的密码与用户名列表中对应的一致,则提示验证成功
37 print("恭喜你,验证成功")
38 quit()
代码实现效果:
python函数说明:
list():将参数转换成以列表的方式显示,例如:list('abcd') >>> ['a', 'b', 'c', 'd']
open(file, mode='r'):用于打开一个文件,并返回文件对象。
file参数为文件名,
mode: 可选,文件打开模式,r表示只读,w表示只写,a表示追加。
input():接受一个标准输入数据,返回为 string 类型。
strip():用于移除字符串头尾指定的字符(默认为空格)或字符序列,只能删除字符串头尾的字符。
quit():用于退出整个程序。