欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Python入门-用户登录程序升级版

程序员文章站 2022-04-15 17:21:59
编写登陆接口 基础需求: 让用户输入用户名密码 认证成功后显示欢迎信息 输错三次后退出程序 升级需求: 可以支持多个用户登录 (提示,通过列表存多个账户信息) 用户3次认证失败后,退出程序,再次启动程序尝试登录时,还是锁定状态(提示:需把用户锁定的状态存到文件里) 注:需要先创建一个lock_fil ......

编写登陆接口

基础需求:

  • 让用户输入用户名密码
  • 认证成功后显示欢迎信息
  • 输错三次后退出程序

升级需求:

  • 可以支持多个用户登录 (提示,通过列表存多个账户信息)
  • 用户3次认证失败后,退出程序,再次启动程序尝试登录时,还是锁定状态(提示:需把用户锁定的状态存到文件里)
 1 users = [['ziv', '666'], ['alex', '213']]
 2 login_state = False
 3 # 设置用户登陆状态为False的标志
 4 count = 0
 5 username_count = []   # 用来计算用户登陆次数
 6 user_name = []
 7 lock_users = []
 8 f = open('lock_file.txt', 'r', encoding='utf-8')
 9 # 读取文件里已被锁定用户的信息
10 for i in f:
11     lock_users.append(i.strip())
12 while count < 3:
13     username = input('Username:').strip()
14     password = input('Password:').strip()
15     username_count.append(username)
16     # 将用户输入的用户名添加到计数列表
17     if username in lock_users:
18         exit('用户已被锁定')
19     for user_item in users:
20         if username == user_item[0] and password == user_item[1]:
21             print('登陆成功')
22             login_state = True  # 登陆成功,login_state改为True
23             break        # 跳出for循环
24     else:
25         print('用户名或密码错误')
26         # for 循环正常执行完(登录成功会被break,不会执行else,反之执行),再执行else
27     if login_state:
28         break            # 用来跳出while循环
29     count += 1
30 else:
31     print('错误次数过多')  # 登录成功while被break,不会执行else,反之执行
32     for lock in username_count:
33         user_name.append(lock)
34         if user_name.count(lock) >= 3:  # 列表里面出现次数超过3次的用户名
35             lock_write = open('lock_file.txt', 'a', encoding='utf-8')
36             lock_write.write(lock+'\n')
37             lock_write.close()
38             print('锁定用户:', lock)  

 注:需要先创建一个lock_file.txt文件,文件可以为空。