登录接口

——登录接口——

要求:·输入用户名密码

           ·认证成功后显示欢迎信息

           ·输错三次后锁定

大体思路:

首先要输入用户名和密码,有一个条件是输错三次之后,账户就被锁定,所以考虑要有一个循环,输入用户名和密码的操作应该是在循环内。

接下来,用户名和密码输入完成以后,要考虑的问题是,应该先查找黑名单里面是否有该用户。涉及的操作有:打开文件,应该以“r+”的形式打开,不仅能读,而且在输入三次都错误的情况下,还可以把用户名写进去。循环该文件的每一行,并且作一个判断,如果某一行存在输入的用户名,这时候就打印“您的账户已被锁定”,然后退出整个程序,退出的方法为,设计一个退出标志exit_flag=False,如果账户被锁定,这时候退出标志位就变为exit_flag=True。注意,在这里再说明一点,for in 结构循环文件的每一行,当循环到最后一行时,文件指针就停留在文件的末尾,所以这个循环对于整个文件来说只执行一遍,不会在里面构成死循环。

如果黑名单中不存在输入的用户,那么我们接下里就要查找用户文件中是否存有该用户的信息。涉及的操作有:打开用户名单这个文件,以“r”的形式打开,只需要读取就可以,然后还是循环文件的每一行,作一个判断。首先要把每行转换成列表这个列表以空格进行分割,这里要引入一个名为re的模块,然后使用re.split(" ",line)语句进行分割,分割之后再转换为列表,line_list=list(re.split(" ",line)),因为每一行末尾都有一个换行符“\n”,所以提前要把换行符用line=line.strip()语句去掉。然后执行判断,如果列表中的第0个元素和输入的用户名相同,并且列表中的第1个元素和输入的密码相同,这时候就显示成功登陆的信息,并且退出整个程序,退出方法上同,否则的话,就显示无效的用户名或者密码。注意,这个判断有一个大的前提,就是用户名需要在用户名单里面,不然如果输入的是黑名单的用户,依然会显示无效的用户名或者密码,因为else的情况,是除了用户名和密码均相同以外其他所有的情况。

接下里就是输入三次之后账户被锁定的部分,首先要有一个计数,在循环外初始化count=0,每循环一次,count+=1,当count=4的时候,账户应该就要被锁定了,这时候显示“您已经输入了太多次,您的账户已经被锁定”。然后还要把此用户名写入黑名单中,同时要把该用户从用户名单中删除掉。删除的方法是,用with语句进行文件修改,先以“r”的方式打开用户名单,然后读取每一行,然后再以写的方式打开用户名单,循环文件的每一行,作一个判断,如果某行有被锁定的用户名,就继续返回循环,相当于什么也不做,若是该行没有被锁定用户,则把该行写入用户名单中,这样就做到了在用户名单中删除被锁定用户。

程序如下:

结果如下:

#输入的用户名已被锁定

#输入的用户名和密码一次正确

#输入的用户名,密码到第二次才正确

#输入的用户名,密码到第三次才正确

#三次输入错误后,账户被锁定

你可能感兴趣的:(登录接口)