1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > python学习-实现用户密码登录 输错三次锁定

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

时间:2019-06-24 15:58:17

相关推荐

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

作业需求:

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

实现思路:

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

方式一:

#!/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)breakelse:print("账号和密码不匹配")count +=1else: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: 7name = input("请输入用户名:") 8lock_file = open("account_lock.txt","r+") #读取黑名单,"r+":打开一个文件用于读写,"r":以只读方式打开文件 9lock_list = lock_file.readlines()10#.readlines():一次读取整个文件,并将内容分析成一个行的列表,与.read()一样11#.readline():一次读取一行,当内存不够时使用.readline()12for lock_line in lock_list:13 lock_line = lock_line.strip('\n')14 if name == lock_line:15 #如果输入的用户名位于黑名单,则程序异常退出16 sys.exit("用户%s已经被锁定,请联系管理员解锁." %name)17#读取正确的用户名和密码18user_file = open("account.txt","r")19user_list = user_file.readlines()20for 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 = 027 while i<3:28 passwd = input("请输入密码:")29 if passwd == password:30 print("欢迎%s登录"%name)31 sys.exit(0)32 else:33 if i<2:34print("用户%s密码错误,请重新输入,还有%d机会."%(name,2-i))35 i += 136 else:37 lock_file.write(name + '\n')38 sys.exit("用户%s输错密码三次,用户将被锁定并退出,请联系管理员解锁."%name)39 else:40 pass41else:42 #用户名输入错误计数43 if count < 2:44 print("用户%s不存在,请重新输入,还有%d次机会"%(name,2-count))45 count += 146 else:47sys.exit("用户%s不存在,退出"%name)48 #关闭已经打开的文件49 lock_file.close()50 user_file.close()

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。