天天看点

Python模拟登陆及个人经验(五)

实验名称:模拟登陆

实验要求:

输入用户名密码

认证成功显示欢迎信息

输错三次锁定用户

思路:

用户输入username

判断username是否为真(文件)。

否:提示用户不存在;是:判断是否锁定(文件)

如果用户锁定提示:该用户已锁定;没锁定就输入密码

循环三次(判断密码是否正确)

密码超过三次不正确,就写入锁文件

流程图:

<a href="https://s1.51cto.com/oss/201711/02/3f9b32d65712b0a8ed38ee85b603dd44.png-wh_500x0-wm_3-wmp_4-s_1835019730.png" target="_blank"></a>

    代码实现:

#!/usr/bin/env python

#Author:Li QW

#加载sys模块

import sys

#指定文件路径,这里用的是绝对路径

user_word='C:/Users/Administrator/Desktop/open.txt'  #用户文件

close_word='C:/Users/Administrator/Desktop/close.txt' #锁用户文件

f=open(user_word,'r')  #打开文件

user_info=f.read() # 读取文件

f.close() #读取之后关闭文件

user_lis= user_info.split("#") #以井号作为分隔符

dict = {} #导入字典

for item in user_lis:  #赋给变量item

    item_list=item.split(':') #以冒号作为分隔符

    dict[item_list[0]]=item_list[-1]    

count = 0 #计数器的作用

username = input("Input username:") #输入用户名

if username in dict:

    l=open(close_word,'r')

    black_info = l.read()

    l.close()

    black_list = black_info.split('#')

    lock_dict = {}

    for items in black_list:

        items_list = items.split(':')

        lock_dict[items_list[0]]=items_list[-1] #这里注意,用-1 读最后一行,我之前写1 ,掉进坑里爬不起来了。写1,当文件为空时,它会读取不到这个参数就会报错。

    if username in lock_dict: #如果在close.txt文件有这个用户,则提示该用户已锁!

        print("username close...")

        sys.exit() #退出

    else:

        while count &lt;3: #输入次数小于三次继续循环

            password = input("Input password:") #输入密码

            if password == dict[username]: #判断密码是否正确

                print("Welcome user login !")

                sys.exit()

            else:

                count +=1 #错误累加一次 (相当于count = count +1)

                if count ==3: #写错三次记录到close.txt文件中

                    l=open(close_word,'a') 

                    l.write("#%s:%s"%(username,dict[username]))

                    print("用户输错三次被锁定...")

                    sys.exit() #退出

                else: #提示还有几次机会

                    print('您还有%s次机会'%(3-count)) 

else: #用户不存在打印

    print("NO usernames...") 

附带报错内容: 

<a href="https://s4.51cto.com/oss/201711/02/f2c848760cbee0b07edaefd26e17d5b5.png-wh_500x0-wm_3-wmp_4-s_4222221847.png" target="_blank"></a>

心得体悟:

写代码容易,排错难!做事要尽可能的考虑周全。走过的坑多了,自然就会熟悉。

本文转自白羊IT51CTO博客,原文链接:http://blog.51cto.com/000011211684/1978403,如需转载请自行联系原作者