用户登录信息(2)

  用户登录信息(2),终于有时间补上了,在用户登录信息(1)中是最固定的一个用户名密码进行测试的,而现实的情况并非如此,用户的登录信息通常会有一个用户库,来存储用户名和密码,当用户登录时,会与用户库匹配相关信息,这里就进行了介绍,与用户登录信息 (1)相比(2)又增加了用户不存在提示注册的功能。

  要求:
1、输入用户名密码

2、认证成功,欢迎信息

3、密码输错三次被锁

4、如果用户不存在,提示注册

  黑名单:

  用户信息库:

  大框架:

#1、输入用户名密码
input()
#2、判断是否为黑名单用户 with open("black_user.txt","r") as f: f.readlines()
#3、不在黑名单中,检测数据库中用户信息 with open("user.txt","r") as data: data.readlines()
#4、认证成功,输出欢迎信息,密码错误三次,用户被锁,进入黑名单 print("认证成功,欢迎登陆") input("请输入密码")
#5、用户名不存在,提示进行新用户注册 print("用户名不存在") input("注册用户名:")

  程序如下:

#1、输入用户名密码
user_name = input("请输入你的用户名:")
#2、判断是否为黑名单用户 with open("black_user.txt","r") as f: lock_list = f.readlines() #读取黑名单中数据 lock_flag = 0 #做个标记,为了绕开for循环 for lock_line in lock_list: lock_name = lock_line.strip() #去掉字符串的空格 if user_name==lock_name: #判断是否在黑名单中 print("对不起,该用户已被锁") lock_flag = 1 #如果在黑名单中标记赋值为1,无需进行下面程序 break #退出for循环 #3、不在黑名单中,检测数据库中用户信息 if lock_flag==0: #不在黑名单中 #print(user_name) #for test #检测用户数据库中是否有用户信息 with open("user.txt","r") as data: user_list = data.readlines() #读取用户库中每行数据 for user_line in user_list: user_flag = 0 #做标记,为了说明不存在用户 user,password = user_line.strip().split() #去掉空格,对字符串进行分割 #print(user) #for test #print(password) #for test #4、认证成功,输出欢迎信息,密码错误三次,用户被锁,进入黑名单 if user==user_name: user_flag = 1 #用户名存在,标记赋值为1 flag = 0 #做标记,为了退出第二个for循环 #验证密码是否正确 i = 0 while i<3: #这里也可以用for循环 for i in range(3) user_psword = input("请输入你的密码:") if password==user_psword: print("认证成功,欢迎登陆") flag = 1 #密码正确,标记赋值为1 break #退出while循环 else: print("密码错误!") i+=1 if i==3: print("你的密码错误三次,用户已被锁!") #密码错误三次,用户名添加到黑名单 with open("black_user.txt","a+") as f: f.write(user_name) #写入黑名单 break #认证成功退出第二个for循环 if flag==1: break #用户名不存在 if user_flag==0: print("用户名不存在,请先注册")
#5、用户名不存在,提示进行新用户注册 while True: new_user = input("注册的用户名:") new_flag = 0 #做标记,用来退出while循环 #检测注册用户名是否在用户库中,特别说明一下,注册用户名可能与上面不存在用户名不一致,所以检测用户库 with open("user.txt","r") as data: users_list = data.readlines() for user_line in users_list: line_name,password = user_line.strip().split() if new_user==line_name: #print(line_name) #for test print("用户名已存在") new_flag = 1 #用户名已存在,标记赋值为1 break #退出当前for循环 #注册用户不在用户库,退出当前while循环 if new_flag==0: break #输入注册用户密码 while True: #输入两次密码进行确认 new_password = input("密码:") new_password0 = input("确认密码:") if new_password==new_password0: print("注册成功,请重新登录") #新注册用户名密码存储到用户库中 with open("user.txt","a") as f: f.write(new_user) #添加用户名 f.write(" "+new_password)#添加密码,密码和用户名之间加个空格 break else: print("两次密码输入不一致,请重新输入")

   执行结果:

所有内容,仅作参考,可能有不足或错误之处,欢迎留言批评指正
原文地址:https://www.cnblogs.com/DreamRJF/p/8799289.html