新手,虽然比较简单的东西,但是弄了我很久。

很多不完善的地方,比如锁定用户,同一用户输入错三次密码就会锁定,但是如果在第二第三次换了用户再输入原来的用户,则计数会重新计算。

另外不存在的用户输入密码错误次数过多也会被锁定,然后还能创建一个被锁定的用户,这个就不搞了,只要检测一下是否存在用户名就可以了。

暂时想到了解决办法是在一个专用的文件里面增加一个专用的计数变量,舍弃blocklist这个文件,但是不懂怎么操作,先留着。

虽然python没有像C一样的main函数作为程序入口,姑且弄了一个,方便看懂

'''登陆系统
要求:
1、可以选择创建新的用户
2、可以登陆原有的用户
3、输入密码错误三次后用户则被锁定'''
 
flag=True #循环控制符
 
def createuser():
  f=open('userlist.txt','r')#打开已存在用户的文件,假设文件已经存在
  flag=True
  name=f.readlines()
  f.close()
  while flag:
    username=input('username:')
    flag2=False#用户名已存在的标记符
    for line in name:
      if(username==line.split('*')[0]):
        flag2=True
        print("用户名已存在,请重新输入")
    if flag2!=True:
      f=open('userlist.txt','a')#创建新的用户
      f.write('\n'+username)
      f.write('*')
      password=input('password:')
      f.write(password)
      f.close()
      break
  main()
 
 
def login():#登入函数,输入密码错误三次则锁定用户
  count=0#密码错误计数,3次则锁定
  f=open('userlist.txt','r')
  info=f.readlines()
  f.close()
  user=None#重复用户标记符
  while flag:
    flag2=False
    f2=open('blocklist.txt', 'r')
    block_name=f2.readlines()
    f2.close()
    username=input('username:')
    if user==None:#user没有使用过,则直接赋予输入的用户名
      user=username
    elif user!=username:#如果下一次输入的用户名不一样,则记录上一次的用户名,同时计数清零
      user=username
      count=0;
    for line in block_name:#检查用户名是否被锁定,锁定则返回主菜单
      if username==line.strip('\n'):
        print('该用户已经被锁定,请联系管理员')
        main()
    password=input('password:')
    for line in info:
      if(username==line.split('*')[0]and password==line.split('*')[1].strip('\n')):
        print('登入成功!')
        flag2=True
    if flag2==False:
      count+=1
      print("用户名或密码错误,请重新输入")
    if count==3:#错误三次,把用户名添加到锁定列表中
      print('密码错误次数过多,该用户已被锁定')
      f3=open('blocklist.txt','a')
      f3.write('\n'+username)
      f3.close()
      count=0#加入黑名单后重置计数
      main()#加入黑名单后退回主菜单
info='''
------请输入相关数字-----
1.创建新的用户
2.登陆已有用户
3.退出程序
'''
 
def main():
  print(info)
  while flag:
    i=input()
    if i=='1':
      createuser()
      break
    elif i=='2':
      login()
      break
    elif i=='3':
      exit()
    else:
      print("请输入正确的数字.")
 
main()#程序入口

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!

稳了!魔兽国服回归的3条重磅消息!官宣时间再确认!

昨天有一位朋友在大神群里分享,自己亚服账号被封号之后居然弹出了国服的封号信息对话框。

这里面让他访问的是一个国服的战网网址,com.cn和后面的zh都非常明白地表明这就是国服战网。

而他在复制这个网址并且进行登录之后,确实是网易的网址,也就是我们熟悉的停服之后国服发布的暴雪游戏产品运营到期开放退款的说明。这是一件比较奇怪的事情,因为以前都没有出现这样的情况,现在突然提示跳转到国服战网的网址,是不是说明了简体中文客户端已经开始进行更新了呢?