要求如下:
编写一个登录接口
1、输入用户名和密码
2、认证成功后提示欢迎信息
3、输错三次后锁定
流程图如下:
程序分析:
1、最多循环三次,若超过三次则锁定
2、锁定的账号记录到lock文档中
3、账号、密码输入错误三次都进行锁定
4、账号密码正确直接提示登录成功,并退出程序
5、若账号被锁定则直接退出程序
accounts.txt文件中内容如下:
account_lock.txt文件中的内容如下:
(使用as登录时,就会提示该用户名已被锁定)
代码如下:
#/use/bin/python3
# -*- coding: UTF-8 -*-
account_file = "accounts.txt" #记录用户名和密码的文件
lock_file = "account_lock.txt" #记录锁定的账号文件
i = 0 #循环计数器,用于统计输入的次数
while i < 3:
username = input("Please enter username:") #输入用户名
username = username.strip()
if len(username) == 0: #判断用户名是否为空
print("The username can not be empty!") #用户名为空时,给出提示
loacf = open(lock_file) # 输入用户名后,打开lock文件,检查此用户是否被Lock了
for line in loacf.readlines():# 循环Lock文件
if username == line.strip("\n"): # 去掉换行符
print("The user %s is Lock!" %username) #提示用户已被锁定
exit() #退出循环程序
password = input("Please enter password:") #输入密码
if len(password) == 0:
print("The password can not be empty!") #密码为空时,给出提示
use_file = open(account_file,"r") # 打开用户账号文件
flag = False
for line in use_file.readlines():
user,pwd = line.strip("\n").split() # 去掉每行多余的\n并把这一行按空格分成两列,分别赋值为user,pwd两个变量
if username == user and password == pwd: # 判断用户名和密码是否都能匹配上
print("Hello,welcome %s" % username)
flag = True # 匹配上就变为True
break # 然后就不用继续循环了,直接跳出
use_file.close() # 关闭文件
if flag == False: # 如果flag还为False,则还需要继续循环
print("Sorry,the username:%s or password:%s is unmatched!" %(username,password)) #提示用户名或密码不匹配
i += 1 # 计数器加1
else:
print("Welcome login my learning system!") #提示成功登录
break # 用户成功登录,退出循环程序
else:
print("Your account %s is Lock!" % username)
g = open(lock_file,"a")
g.write(username) # 把Lock的用户名追加到lock文件中
g.write("\n") # 插入断行
g.close() # 关闭文件