编写登陆认证程序
题目要求:
让用户输入用户名密码 认证成功后显示欢迎信息 输错三次后退出程序 可以支持多个用户登录 (提示,通过列表存多个账户信息) 用户3次认证失败后,退出程序,再次启动程序尝试登录时,还是锁定状态(提示:需把用户锁定的状态存到文件里)
根据题目要求,先创建两个TXT文件。
一个存放用户信息
一个存放黑名单
需要用到的知识点:
- 循环.
- 字典,列表.
- 打开文件,写入文件.
- 了解文件处理中'a'和'w'的区别.
- 'a'是附加写操作,'w'写入时会刷新文件中的内容.
- 'r+'是读写模式,没有的话会报错,'w+'写读模式,没有会创建新的.
扩展项:(知识盲区,未写入代码)
- 可以把登陆的次数写入文件,可以避免利用返回BUG来多次尝试密码(文件需要刷新)
-
View Code1 #-*-coding:utf-8-*- 2 v = open("admin_data/break_number") #黑名单 3 f = open("admin_data/user") #用户文件,使用字典方式,并准备状态栏,为以后其他用途做准备 4 data = eval(f.read()) #用户文件赋变量,并去掉引号 5 break_data = v.read() #黑名单赋变量 6 f.close() 7 while True: 8 username = input(">>>请输入用户名:").strip() 9 password = input(">>>请输入密码:").strip() 10 if username in break_data: #判断用户是否在黑名单 11 print("账号已冻结,请联系工作人员") 12 exit() 13 if username in data: #锁定当前输入用户 14 number_of_times = 2 # 定义用户允许错误输入几次密码(不包括第一次) 15 while True: 16 if password == data[username][0]: #找到相应用户名的密码,判断是否正确 17 print(">>>登陆成功<<<") 18 exit() 19 elif not number_of_times: #次数减为 O 时,为真 20 print("密码错误已超过3次,账号已冻结") 21 f = open("admin_data/break_number", "a") #打开黑名单,并使用追加的方式。 22 f.write(str(username) + '\n') #将错误三次的用户锁进进黑名单。 23 f.close() 24 exit() #锁定账号后退出系统 25 elif password.upper() == 'B': #返回上次循环,重新输入账户密码 26 break 27 else: 28 print("----密码错误,还有%d次机会----" % number_of_times ) 29 number_of_times -= 1 #每次递减1 30 print("按B更换用户名或者重新输入密码:") 31 password = input(">>>").strip() #再次输入密码 32 else:print("用户名不存在")


浙公网安备 33010602011771号