[Python3.x]多次登陆锁定用户

要求:
输入用户名,密码
认证成功显示欢迎信息
输入错误三次后锁定用户
Readme:
  1.account.txt是存放用户id及密码的文件

  2.account_loc.txt是存放被锁定的用户id的文档,默认为空.

  3.程序会对account.txt里的合法用户id进行判断,若连续输入用户id错误达三次程序直接退出.

  4.程序会输入对正确用户名后的密码进行判断,输入密码有3次机会,连续三次错误则会锁定用户id并且退出.

流程图:

 

代码实现:

版本1:输入写死的用户名密码

#写死了用户名密码,输入错误三次退出,或者成功登陆
user = "Amy"
passwd="123456"
i=0

while i < 3:
    name = input("Please in put username:\n")  #写入用户名
    key = input("Please input password:\n") #写入用户密码
    if name == user and passwd == key:  #判断用户名和用户密码是否和预期一致
        print("Welcome!")  #如果一致,返回欢迎界面,登陆成功!
        break #退出所有循环,如果没有这个就是退出单层循环,会返回输入用户名这个
    else:
        i = i + 1    #如果用户名或者密码不一致,计数器加一
        if i<3:      #如果计数器小于3,就是说等于1,或者2次输入错误,返回重新输入
            print("Error username or password,Please input again!\n")
        else:
            print("Too many times error !")
View Code

最终版本:加入文件读写

 1 i=0
 2 while i<3: #设置如果输入三个用户名都无法登录成功,算尝试过多,失败退出
 3     user = input("请输入用户名:")
 4     i=i+1  #对用户名输入次数做限制
 5     lock_file=open("account_lock.txt","r+")#打开记录锁定用户名的文件,查看该用户是否被锁定,如果是,退出,不是进入下一步
 6     lock_list = lock_file.readlines()   #按照list循环读取锁定用户名的文件
 7     for lock_line in lock_list:   #循环读取锁定用户名的文件内容
 8         lock_line=lock_line.strip("\n")#去掉换行符
 9         if user in lock_line:#判断用户输入用户名存在锁定用户名的文件中
10             print("用户 %s 已经被锁定,退出" % user)
11             exit()#退出
12             # lock_file.close()
13     f=open("account.txt","r+") #打开存放用户名密码的文件(已存在的)
14     account_list=f.readlines()   #对用户名密码文件进行遍历
15     for user_line in account_list:
16         (username,password)=user_line.strip('\n').split(" ")#获取用户名、密码列表
17         if user == username:#判断用户输入用户名是否在文件中存在,是进行下一步
18             # print(username,password)
19             j=0#设置计数器,对密码输入次数做限制
20             while j <3:#输入密码次数小于三次就进行循环
21                 key =input("请输入用户密码:")#输入密码
22                 if key == password:
23                     print("恭喜你,用户%s 登陆成功!" %user)  #密码正确,提示欢迎登录
24                     exit()#退出程序
25                 else:#密码输入错误的提示
26                     if j<2:#如果密码输入第一次错误,第二次错误,提示还有n-1次机会并且回到内循环头,重新输入密码
27                         print("用户 %s 密码输入错误,您还有%s 次机会,请重新输入:"%(user,2-j))
28                 j =j+1 #密码输入次数计数器
29             else:#同一用户,输入错误密码达到三次
30                 lock_file.write(user +"\n")#将用户名写入锁定文件,并提示
31                 print("用户 %s 达到最大登录次数,将被锁定并退出"%user)
32                 exit()#退出登陆程序
33         else:#当用户没有匹配,继续循环,找,直到遍历account_list
34             pass
35     else:#用户名和密码不存在用户密码文件,显示提示,用户不存在
36         print("用户 %s 不存在,请重新输入"%user)
37 else:#i>=3,输入三次错误用户
38     print("尝试次数过多,退出登陆!")
39 lock_file.close()#关闭锁定用户文件
40 f.close()#关闭用户名密码文件
View Code

猜你喜欢

转载自www.cnblogs.com/amberly/p/10524331.html