【python程序】简单的用户登录,账号锁定

   利用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发博客,只是记录学习过程,如果内容有不对的地方请大牛指正!

  

猜你喜欢

转载自blog.csdn.net/qq_41574830/article/details/81021968
今日推荐