day1作业一:编写登陆接口

作业一:编写登陆接口

1.输入用户名和密码

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

3.输错三次后锁定

Readme:

(1)提示用户输入用户名;

(2)用户名验证,验证是否已经锁定;

(3)是否锁定:已锁定告诉用户,输入的用户名已经锁定,找管理员联系;未锁定就验证是否注册;

  (4)是否注册:未注册就提示用户,这个用户名还没有注册,需要注册;注册就让用户输入密码;

  (5)输入密码:输入正确就欢迎用户,输入不正常就三次机会,提示用户输入,三次之后将锁定

  (6)锁定用户从登录用户文件中移除并添加到锁定用户文件。

流程图如下:

def islocked(username):
    #验证用户是否锁定,如果锁定,就打印锁定,否则执行登录模块
    with open("lock_user","r") as f:   #打开文件,进行验证
        users = []                     #定义一个空的列表,用于存储用户名
        lines = f.readlines()          #由于是读取的文件信息,需要把用户信息放到一个列表中容易操作
        for line in lines:
            users.append(line.strip().split(":")[0])       #生成一个包含所有用户名的列表
        if username in users:
            #验证用户输入的用户名是否在系统用户列表中,存在则提示用户已经锁定了
            print("你输入的用户名%s已经被锁定,请联系管理员" %username)
            exit()

        else:
            #不存在则验证是否注册
            isregister(username)

def isregister(username):
    #验证用户是否注册
    with open("user_list",‘r‘) as f_object:
        #打开文件,生成用户列表
        register_users =[]
        user_lines = f_object.readlines()
        for user_line in user_lines:
            register_users.append(user_line.strip().split(":")[0])
        if username in register_users:
            #验证用户是否注册,注册了就跳过
            pass
        else:
            #没有注册提示用户这个用户名没有注册,并退出循环
            print("Sorry,%s还没有注册,请注册之后登录" %username)
            exit()

def userpassword():
    #让用户输入用户密码,并返回给调用函数
    password = input("Please input your password:")
    return password

def login(username):
    #用户登录模块
    i = 0
    islocked(username)
    #验证用户是否锁定是否注册
    with open("user_list","r") as f1:
        dic = {}      #定义空字典,生成用户名,密码配对字典
        user_lines = f1.readlines()
        for user_line in user_lines:
            #生成用户名-密码字典
            (user,user_password) = user_line.strip().split(":")
            dic[user] = user_password
        while i < 3:
            #用户有三次机会输入密码验证
            password = userpassword()
            #调用函数让用户输入密码
            if dic[username] == password:
                #用户输入的密码与系统存储的密码比较,如果一致登录成功就退出登录页面
                print("Hello %s,welcome to back." %username)
                break
            else:
                #不成功提示用户有三次机会,如果三次都不成功,将锁定用户名
                if i != 2:
                    print("对不起,你输入的密码不对,你还有%s次机会" %(2-i))
                    i += 1
                else:
                    print("对不起,你输入的次数过多,你的用户名已经被锁定,请联系管理员")
                    add_locked_user(username)
                    #输入次数过多,把用户名从文件user_list中删除,同时添加到锁定文件lock_user
                    break

def add_locked_user(username):
    #锁定输入密码次数过多用户名
    with open("user_list","r") as file:
        #打开文件,并查找要锁定用户名的位置
        lines = file.readlines()      #逐行读取文件生成一个列表
        users = []                    #定义一个空的列表,借助用户名列表找到用户名位置
        for line in lines:
            users.append(line.strip().split(":")[0])
        num = users.index(username)          #找到锁定问户名在列表中索引
    with open("lock_user","a") as f:
        #将待锁定的用户名添加到锁定文件
        f.write("%s\n" %lines[num])
    with open("user_list","w") as f_object:
        #以只读模式打开文件
        del lines[num]          #删除锁定用户的用户名
        f_object.writelines(lines)       #把剩下用户逐行读取到文件中

login(username=input("Please input your username:"))

上面代码运行需要创建两个文件在同级目录,lock_user和user_list,在里面使用了列表、字典等功能,list列表、字典功能最常用,要经常尝试使用空字典、空列表的功能,writelines(),readlines()。上面代码可以实现判断用户输入的用户名是否在锁定列表中,是否在登录的列表中,并且能够实现登录三次锁定的功能。

时间: 2024-10-29 19:06:59

day1作业一:编写登陆接口的相关文章

day1作业:编写登陆接口

作业一:编写登陆接口 1.输入用户名和密码 2.认证成功后显示欢迎信息 3.输错三次后锁定 思路:要求是编写登陆接口,那么要有一个存放用户信息的模块:三次后锁定,要有一个存放锁定用户信息的模块:我们知道,保存用户信息有两种方式,一种是数据库保存,一种是文件保存,现在我们只学习了文件保存,因此要有两个文件,一个是用户信息文件,一个是锁定用户信息文件. 要从文件中读取信息,添加信息,修改信息. readme: (1)用户输入用户名: (2)用户名去锁定文件中验证是否锁定:如果锁定让用户联系管理员解决

【跟着金角大王学Python】-课后作业:编写登陆接口

要求: 输入用户名密码 认证成功后显示欢迎信息 输错三次后锁定 本程和作业要求稍有不同,当用户输入三次相同的用户名且无法登陆时锁定该用户名. 下面也会附上符合题目要求的代码,但是存在一个Bug,就是输入三次无法正确登陆只会锁定最后一次输入的用户名. 程序一: #!usr/bin/evn python #-*-coding utf-8  -*- __author__ = 'Galen' import getpass as gp#引入getpass模块 import pickle#引入pickle模

python作业:编写登陆接口

要求: 1.要求用户输入用户名和密码 2.认证成功显示欢迎信息 3.输入错误超过三次锁定用户 1 #!/usr/bin/env python 2 #_*_coding:utf-8_*_ 3 #__author__ = 'Administrator' 4 5 static=True 6 login=False 7 username='' 8 lockfile=r'lock.txt' 9 for i in range(3): 10 username=input("please input your

python之作业编写登陆接口(第一天)

作业:编写登陆接口 输入用户名密码 认证成功后显示欢迎信息 输错三次后锁定 针对此实例写了有二种类型的脚本,略有不同,具体如下: 帐号文件account.txt内容如下: sam 123 david 12 kevin 123lin 12 tailen 123 jack 12 锁文件account_lock.txt默认为空 一.只针对帐号文件里的用户进行判断并锁定,针对用户和密码各有三次错误重试机会. 1.流程图如下: 代码如下: #!/usr/bin/python27 #_*_ coding:u

python之编写登陆接口(第一天)

作业:编写登陆接口 输入用户名密码 认证成功后显示欢迎信息 输错三次后锁定 帐号文件account.txt内容如下: sam 123 david 12 kevin 123lin 12 tailen 123 jack 12 锁文件account_lock.txt默认为空 1.流程图如下: 二.针对帐号文件里的不存在的用户也可以进行判断并锁定,针对用户和密码共有三次错误重试机会 1 #_*_ coding:utf-8 _*_ 2 3 import sys,os,getpass 4 5 os.syst

python第一天作业: 编写登陆接口

# -*- coding:utf-8 -*- #Author David """ 功能简介:编写登陆接口 输入用户名和密码 认证成功后显示欢迎信息 输错三次后锁定 """ #用户信息表 user = "david" passwd = "123456" unlock = 1 error_count = 0 """ 定义函数主体 功能说明: 1)当用户输入用户名时首先判断是否存在,

python学习基础篇--编写登陆接口

#!/usr/bin/env python#_*_conding:utf-8_*_#-----------------------------------------------------#编写登陆接口,要求:#输入用户名密码#认证成功后显示欢迎信息#密码输错三次后锁定帐户#----------------------------------------------------- user='admin' # 定义登录帐号密码passwd='123' # 定义登录帐号密码count=0 #定义

编写登陆接口

编写登陆接口: 输入用户名密码    认证成功后显示欢迎信息    输错三次后锁定 1 #!/usr/bin/env python 2 # -*- coding:utf-8 -*- 3 4 5 name = "mike" 6 pswd = "1" 7 import getpass 8 count = 0 9 while count < 3: 10 user_input = input("请输入姓名:") 11 pswd_input = ge

使用 Python 编写登陆接口

# Create Date: 2017.10.31 Tuesday# Author: Eric Zhao# -*- coding:utf-8 -*-'''编写登陆接口输入用户名密码认证成功后显示欢迎信息输错三次后锁定 '''login_user = input('Please input user name..')# obj_u = '\''+login_user+'\''# print(obj_u)password = input('Please input password..')users