修改了一下之前用Python写的登入系统

实现了之前文章里面自己知道不完善的部分,舍弃了麻烦的blocklist.txt文件,把登入函数重新写了一遍,中途遇到很多问题

花了不少时间研究字符串的改写,虽然是很简单的事情,但是还是做了很久

用了一种比较蠢的方法,考虑到文档中最后一行不一定换行符,每次增删的时候都要对换行符进行操作,不过暂时想不到更好的办法

'''登陆系统
要求:
1,可以选择创建新的用户,可以检测出用户名是否已存在
2,可以登陆原有的用户
3,输入密码错误三次后用户则被锁定'''

flag=True #循环控制符
def createuser():
    f=open('userlist.txt','r')#打开已存在用户的文件,此处默认已有该文件,用户信息格式为用户名*密码*密码输入错误次数
    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:
            password=input('password:')
            f=open('userlist.txt','a')#创建新的用户
            f.write('\n'+username)
            f.write('*'+password+'*0')#创建新用户默认密码输入错误次数为0
            f.close()
            print("用户创建完毕")
            break
    main()

def login():#登入函数,输入密码错误三次则锁定用户
    f1=open('userlist.txt','r+')
    name=f1.readlines()
    f1.close()
    while flag:
        count=0#用户名列表计数,每次输入完毕就清零
        username=input('username:')
        for line in name:
            count+=1
            if line.split('*')[0]==username:
                if int(line.split('*')[2][0])==3:
                    print('该用户已经被锁定,将返回主菜单')
                    main()
                else:
                    password=input('password:')
                    if line.split('*')[1]==password:
                        print('登陆成功!')
                        main()#登入成功,返回主菜单
                    else:
                        print('用户名或密码错误,请重试')
                        if(line.split('*')[2][0])=='0':
                            name[count-1]=name[count-1].strip()[:-1]#删除字符串最后一个字符
                            name[count-1]+='1\n'#修改密码错误次数
                        if(line.split('*')[2][0])=='1':
                            name[count-1]=name[count-1].strip()[:-1]#删除字符串最后一个字符
                            name[count-1]+='2\n'#修改密码错误次数
                        if(line.split('*')[2][0])=='2':
                            name[count-1]=name[count-1].strip()[:-1]#删除字符串最后一个字符
                            name[count-1]+='3\n'#修改密码错误次数
                        f2=open('userlist.txt','r+')
                        f2.writelines(name)#每次输错密码就复写文件,记录详细数据
                        f2.close()
                        break



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()#程序入口

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值