基础需求: 1. 让用户输入用户名密码 2. 认证成功后显示欢迎信息、程序结束 3. 输错三次后退出程序
升级需求: 1. 可以支持多个用户登录 2. 用户3次认证失败后,退出程序,再次启动程序尝试登录时,还是锁定状态
首先是拓扑图
还有,要先创建 一个空的文件,我命名为
account_lock.txt
来储存黑名单用户
下面是代码,因为有OS模块还不会使用,所以借鉴了前辈们的两段代码.
#!./usr/bin/env.python
#.Date:.2019/3/18
import os
count_1 = 3
count = 3
_1 = ["abc", "123456"]
_2 = ["cba","234567"]
_3 = ["bca","345678"]
while count > 0:
count -= 1
name = input("请输入用户名: ")
with open('account_lock.txt', 'r') as account_lock: # 打开account_lock文件,并赋予可读写权限
lock_list = account_lock.readlines() # readlines()逐行读取全部内容
for lock_name in lock_list: # 遍历lock_list,如果用户名在,则执行if
lock_name = lock_name.strip('\n') # 去除每行内容的换行符
if lock_name == name:#检查是否存在
print("用户已经锁定,无法登录!")
exit()
if name == _1[0] or name == _2[0] or name == _3[0]:#对比用户名是否存在
password = input("请同志输入密码:")
name_pass = [name, password,]#把输入的用户名和密码写入一个变量里面
if name_pass == _1 or name_pass == _2 or name_pass == _3 :#将变量与列表里面的对比
print("欢迎",name,"同志登陆")
exit()
else:
break#结束循环,执行下一个循环
else:
print("用户名错误,还可以输入",count,"次")
sel = int(input("重新输入1,退出输入2;"))
if sel == 1:
continue
elif sel == 2:
break
while count_1 > 1 and name_pass != _1 and name_pass != _2 and name_pass != _3 :#判断密码正确与是否超过三次
count_1 -= 1
print( name, "同志,你的密码不正确,还有",count_1,"次,超过",count_1,"你的将被禁止登陆!!!" )
password = input("请输入新的密码:")
name_pass = [name, password, ]
if name_pass == _1 or name_pass == _2 or name_pass == _3:
print("欢迎",name,"同志登陆")
exit(1)
else:
pass
if count_1 == 1: # #这个循环检查密码是否超过三次,超过就执行if,把用户名加入锁定用户列表并退出
f = open('account_lock.txt', 'a')
f.write(name)
f.close()
print("您的账号已锁定!")
exit()