zoukankan      html  css  js  c++  java
  • 用户登录信息(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("两次密码输入不一致,请重新输入")

       执行结果:

    所有内容,仅作参考,可能有不足或错误之处,欢迎留言批评指正
  • 相关阅读:
    668. Kth Smallest Number in Multiplication Table
    658. Find K Closest Elements
    483. Smallest Good Base
    475. Heaters
    454. 4Sum II
    441. Arranging Coins
    436. Find Right Interval
    410. Split Array Largest Sum
    392. Is Subsequence
    378. Kth Smallest Element in a Sorted Matrix
  • 原文地址:https://www.cnblogs.com/DreamRJF/p/8799289.html
Copyright © 2011-2022 走看看