python学习-实现用户密码登录,输错三次锁定

作业需求:

  1.   输入用户名密码
  2.   认证成功后显示欢迎信息
  3.   输错三次后锁定

实现思路:

  1. 判断用户是否在黑名单,若在黑名单,则将用户锁定
  2. 判断用户是否存在,若不存在,提示用户不存在
  3. 若用户存在,判断登录密码是否正确,若正确,则欢迎用户成功登录,提供用户三次密码输入机会,若三次输入错误,则将账户锁定

方式一:

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
count = 0    #计数器
username = "aaa"  #登录用户名
userpassword = "asd"   #登录密码

#读取黑名单用户
f = open("aaa.txt","r")
file_list = f.readlines()
f.close()
lock= []
name = input("登录用户名:")

#判断用户是否在黑名单
for i in file_list:
    line = i.strip("\n")
    lock.append(line)
if name in lock:
    print("你的账户已锁定,请联系管理员。")
else:
#如果用户没有在黑名单,判断用户是否存在
    if name == username:
    #如果密码连续输错了三次,锁定账号
        while count <3:
            password = input("登录密码:")
            if name == username and password == userpassword:
                print("欢迎%s!"%name)
                break
            else:
                print("账号和密码不匹配")
                count +=1
        else:
            print("对不起,您的账号连续输错三次密码已被锁定,请联系管理员。")
            f = open("aaa.txt","w+")
            li = ['%s'%username]
            f.writelines(li)
            f.close()
    else:
        print("用户名不存在,请输入正确的用户名。")

方式二:

 1 #新建两个文件,account.txt和account_lock.txt,在account中输入aaa 123
 2 #其中account.txt采用只读形式,account_lock.txt则采用读写形式
 3 import sys,os
 4 count = 0
 5 name_list = []
 6 while count < 3:
 7     name = input("请输入用户名:")
 8     lock_file = open("account_lock.txt","r+")   #读取黑名单,"r+":打开一个文件用于读写,"r":以只读方式打开文件
 9     lock_list = lock_file.readlines()
10     #.readlines():一次读取整个文件,并将内容分析成一个行的列表,与.read()一样
11     #.readline():一次读取一行,当内存不够时使用.readline()
12     for lock_line in lock_list:
13         lock_line = lock_line.strip('\n')
14         if name == lock_line:
15             #如果输入的用户名位于黑名单,则程序异常退出
16             sys.exit("用户%s已经被锁定,请联系管理员解锁." %name)
17     #读取正确的用户名和密码
18     user_file = open("account.txt","r")
19     user_list = user_file.readlines()
20     for user_line in user_list:
21         (user,password) = user_line.strip('\n').split()
22         name_list.append(user_line)    #.append():用于在列表末尾添加新的对象
23         print("---------",name_list)
24         #用户名正确,密码输入计数
25         if name == user:
26             i = 0
27             while i<3:
28                 passwd = input("请输入密码:")
29                 if passwd == password:
30                     print("欢迎%s登录"%name)
31                     sys.exit(0)
32                 else:
33                     if i<2:
34                         print("用户%s密码错误,请重新输入,还有%d机会."%(name,2-i))
35                 i += 1
36             else:
37                 lock_file.write(name + '\n')
38                 sys.exit("用户%s输错密码三次,用户将被锁定并退出,请联系管理员解锁."%name)
39         else:
40             pass
41     else:
42         #用户名输入错误计数
43         if count < 2:
44             print("用户%s不存在,请重新输入,还有%d次机会"%(name,2-count))
45         count += 1
46 else:
47     sys.exit("用户%s不存在,退出"%name)
48 #关闭已经打开的文件
49 lock_file.close()
50 user_file.close()

 

posted @ 2018-03-25 11:43  偶尔写点代码  阅读(4408)  评论(0编辑  收藏  举报