zoukankan      html  css  js  c++  java
  • day1作业:编写登陆接口

        作业一:编写登陆接口 

        1.输入用户名和密码

        2.认证成功后显示欢迎信息

        3.输错三次后锁定

        思路:要求是编写登陆接口,那么要有一个存放用户信息的模块;三次后锁定,要有一个存放锁定用户信息的模块;我们知道,保存用户信息有两种方式,一种是数据库保存,一种是文件保存,现在我们只学习了文件保存,因此要有两个文件,一个是用户信息文件,一个是锁定用户信息文件。

        要从文件中读取信息,添加信息,修改信息。

        readme:

        (1)用户输入用户名;

      (2)用户名去锁定文件中验证是否锁定;如果锁定让用户联系管理员解决;

        (3)如果没有锁定去用户文件验证用户是否存在,存在让用户输入密码,输入成功后显示欢迎信息;输错三次后锁定用户;

        (4)如果用户不在用户文件中,提示用户没有注册,需要注册,编写注册模块,让用户注册,注册之后添加用户到用户列表中,并且显示欢迎信息,不让用户在进行输入,自动链接到登录状态。

        流程图如下:

    active = None
    #程序执行的标识符
    
    def verification(username):
        """验证用户是否锁定"""
        locked_users = []
        with open("locked_file") as locked_f:
            for line in locked_f:
                locked_user,locked_pwd = line.split(":")
                locked_users.append(locked_user)
            print(locked_users)
        if username in locked_users:
            print("对不起,你的用户名已经被锁定,请联系管理员!")
        else:
            active = True
            return active
    
    def is_registered(username):
        """验证用户是否注册,注册就让用户登录,未注册让用户选择重新输入或者注册"""
        users = {}
        with open("active_file","r+") as f:
            for active_line in f:
                user,pwd = active_line.split(":")
                users[user] = pwd
    
        if username in users.keys():
            test_num = 0
            while test_num < 3:
                user_pwd = input("请输入您的密码:")
                if user_pwd == users[username]:
                    print("welcome back,have a good time!")
                    return False
                else:
                    test_num += 1
            else:
                #用户输入三次以上锁定用户,使用的是while...else...方法
                print("对不起,你输入的次数过多,你的用户已经被锁定,请联系管理员!")
                mes = "
    " + username + ":" + users[username]
                with open("locked_file","a") as f1:
                    f1.write(mes)
                return False
        else:
            print("您输入的用户名不存在,请按照下面的提示选择!")
            print("注册:请输入1
    登录:请输入2")
            num = input("请输入你的选择:")
            if num == "1":
                register_name = input("请输入你要注册的用户名:")
                while True:
                    register_pwd = input("请输入你的密码:")
                    register_pwd2 = input("请再次输入你的密码:")
                    if register_pwd == register_pwd2:
                        break
                    else:
                        print("您输入的密码不对,请重新输入")
                message = "
    " + register_name + ":" + register_pwd
                print("Thank for your registing,have a good time!")
                with open("active_file","a") as f_obj:
                    f_obj.write(message)
                return False
    
            elif num == "2":
                user_name = input("请重新输入你的用户名:")
                verification(user_name)
    
    if __name__ == "__main__":
    
        username = input("请输入你的用户名:")
        active = verification(username)
        while active:
            active = is_registered(username)

        上面代码实现了验证和锁定的功能,也实现了新用户的注册功能,但是有一个缺陷,就是当用户锁定的时候没有从这个当前文件中删除,添加到锁定用户信息的文件中,往文件中添加信息很简单,但是从文件中删除一条信息却不是很简单,不能像列表那样随心所欲的操作。只能先进行转换,而且列表中操作文件的时候,换行符等等这些东西有很恶心。上面代码会进行如下转换,学习本来就是一件繁琐的事情,但是也要去做的完美,下面会参考别人写的代码,学习一下别人如何实现文件中不需要的信息的删除,然后好好完善一下上面的代码。

       

  • 相关阅读:
    CookieUtil.java
    观察者模式
    ELK日志分析系统
    Zookeeper安装配置及简单使用
    Zookeeper
    MBMD(MobileNet-based tracking by detection algorithm)作者答疑
    python代码迷之错误(ModuleNotFoundError: No module named 'caffe.proto')
    深度学习中易混概念小结
    Python爬虫小结
    VOT工具操作指南(踩过的坑)
  • 原文地址:https://www.cnblogs.com/gengcx/p/6937976.html
Copyright © 2011-2022 走看看