利用Python写一个简单的用户登录小程序,当用户输入三次密码错误时,系统将锁定该账户,下一次该账户登录时则提醒已锁定,不能登录。
内容:
userdownload.py+user.text+lock_user.text
流程图:
源代码
"""
用户登录以及账户错误锁定
"""
import sys
#输入用户名密码
username=input("username:")
password=input("password:")
#读取文件并转化为字典
with open('./user','r')as f:
result = dict(line.strip().split(":") for line in f if line)
#设置计数器
count=0 #全局变量
#用户是否存在
def if_user_exit():
count = 0 #局部变量
for key in result:
if username == key:
count+=1
if count==0:
print("The user is not exist")
sys.exit()
#检查用户是否被锁
def if_user_lock():
with open('./lock_user','r') as f:#检查该用户是否被lock
for line in f.readlines():
if username==line.strip():
print("The user is locked")
sys.exit()
if_user_exit()
if_user_lock()
while count < 3:
if password == result.get(username):
info='''welcome user {_username} login'''.format(_username=username)
print(info)
break
else:#用户名密码不正确,告知登录失败,计数器加一
if_user_exit()#判断第二次输入的用户是否存在
count+=1
if count==3:#首先判断是否错误三次
# print("sorry,the user %s is locked")%(username)#第三次登录失败告知用户被锁
print("sorry,the user is locked")#第三次登录失败告知用户被锁
with open('./lock_user','a') as f_lock:#将用户写到文件中
f_lock.write(username+'\n')
else:
print("login filed:three filed will be lock,only have {_count} changes".format(_count=3-count))
username = input("username:")
password = input("password:")
这里要注意一下if_user_exit()中count是局部变量,它的作用只是判断用户名是否存在,在这个函数前一行的count才是全局变量,如果用户密码输入错误,count+=1是改变的全局变量,局部变量count只在if_user_exit()中起作用,要区分开。
还有一个是with语句中文件路径的问题,我刚开始是在外面新建了这两个文件,运行时报错,找不到文件,之后我又在PyCharm中同一个文件夹里新建的这两个文件才正确。
初学者第一次在CSDN发博客,只是记录学习过程,如果内容有不对的地方请大牛指正!