前言:
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 whileTrue: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 whileTrue: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():用于退出整个程序。