编写登陆接口
基础需求
- 让用户输入用户名和密码
- 认证成功后显示欢迎信息
- 输错三次后退出程序
- 附加功能:多用户、三次输入错误锁定账户(这是我自己加上去的,与升级需求只差对文件进行操作)
# -*- coding:utf-8 -*-
username = ["usr1", "usr2", "usr3"] # 用户列表
password = ["111", "222", "333"] # 密码列表
flag = [0, 0, 0] # 用于标记当前用户状态,初始值为0,锁定为1
count = 0 # 用于控制输入次数
while True:
user = input("用户名:")
if user in username:
addr = username.index(user)
if flag[addr] == 0:
passwd = input("密码:")
if passwd == password[addr]:
print("欢迎", username[0])
break
else:
print("用户名或密码错误!")
if count == 2:
print("三次错误,用户将被锁定!")
flag[addr] = 1
count += 1
else:
print("用户已被锁定!")
break
continue
else:
print("用户不存在!")
continue
升级需求
- 可以支持多个用户登陆
- 用户3次认证失败后,退出程序,再次启动程序尝试登陆时,还是锁定状态(提示:需把用户锁定的状态存到文件里)
参考:https://www.cnblogs.com/wxp997/p/6792825.html
# _*_ coding:utf-8 _*_
import sys,os
import getpass
i = 0
while i < 3:
name = input('输入用户名:')
lock_file = open('Locked_usr', 'r+') # 以读写模式打开Locked_usr,查看用户是否被锁定
lock_list = lock_file.readlines() # 按行读取后,存入列表
for lock_line in lock_list:
lock_line = lock_line.strip('\n') # 把每行的换行符处理掉
if name == lock_line:
sys.exit('用户 %s 已经被锁定,退出' % (name))
user_file = open('Username', 'r') # 只读模式打开Username,查看是否存在该用户
user_list = user_file.readlines() # 按行读取后存入列表
for user_line in user_list:
(user, password) = user_line.strip('\n').split() # 去除每行的'\n'后按空格分隔,对应项赋值
if name == user:
j = 0
while j < 3:
passwd = input('请输入密码:')
if passwd == password:
print('用户%s登陆成功' % name)
sys.exit(0)
else:
if j!=2:
print('用户%s密码错误,请重新输入,还有%d次机会' % (name, 3-j))
j += 1
else:
lock_file.write(name + '\n')
sys.exit('用户 %s 达到最大登陆次数,将被锁定并退出' % name)
else:
pass
else:
if i != 2:
print('用户名%s不存在,请重新输入,还有%d次机会' % (name, 3-i))
i += 1
else:
sys.exit('用户%s不存在,退出' % name)
lock_file.close()
user_file.close()