使用python的文件操作来模拟用户登陆

题目要求

1、输入用户名和密码后回车
2、密码输入错误,给出提示,并选择是否重新输入
3、密码输入错误三次后,用户被锁定,无法继续登陆

构思

1、用户输入账号和密码后,需要判断账号是否存在
2、判断账号是否被禁用(错误次数大于三次)
3、判断账号密码是否正确
4、不同的错误给出不同的提示
5、每输入错一次,文档中的错误次数需要更新
6、如果三次以内用户登陆成功,密码原来的错误次数被重置

题目完成步骤

1、文档的编写

考虑到数据的存储问题,决定将账号、密码、错误次数进行分行存储,三行为一组用户信息

2、代码编写

go = True
while go:
    # 用来判断账号是否存在
    no_existence_flag = True
    # 用来判断是否输入正确
    no_flag = True
    # 用来判断是否已经被封
    disable_flag = True
    # 用来判断次数是否已经超过限制
    account = input("account:")
    password = input("password:")
    # 判断账号是否存在(自己写入已存在用户的账号密码)
    file = open("C:/Users/Lenovo/Desktop/user.txt","r")
    # 用于拼接文本内容
    file_data = ""
    while True:
        line = file.readline()
        if not line:
            break
        file_data += line
        line_content = line.strip()
        # 判断是否存在账号
        if account == line_content:
            no_existence_flag = False
            true_password = file.readline()
            file_data += true_password
            true_password_content = true_password.strip()
            disable_flag_line = file.readline()
            disable_flag_num  = int(disable_flag_line.strip())
            # 判断账号是否被禁用
            if disable_flag_num != 3:
                print("It is not disable!",disable_flag_num)
                disable_flag = False
                # 判断密码是否正确
                if password == true_password_content:
                    no_flag = False
                    print("Welcome in this system,{account}!".format(account = account))
                    go = False
                    disable_flag_line = disable_flag_line.replace(str(disable_flag_num),str(0))
                    file_data += disable_flag_line
                else:
                    disable_flag_line = disable_flag_line.replace(str(disable_flag_num),str(disable_flag_num+1))
                    file_data += disable_flag_line
            else:
                file_data += file.readline()
        else:
            file_data += file.readline()
            file_data += file.readline()
    file.close()
    # 账号不存在的报错
    if no_existence_flag:
        print("This account is not existence!")
        print("Do you want to try it again......")
        flag = input("Please input you think:")
        if flag == "N":
            go = False
        continue
    # 账号被禁用的报错
    if disable_flag:
        print("You account is disable,please go home by youself!")
        print("Do you want to try it again......")
        flag = input("Please input you think:")
        if flag == "N":
            go = False
        continue
    # 账号密码错误的报错
    if no_flag:
        file = open("C:/Users/Lenovo/Desktop/user.txt","w")
        print(file_data)
        file.write(file_data)
        file.close()
        print("Your password is not right,please try it again!")
        print("Do you want to try it again......")
        flag = input("Please input you think:")
        if flag == "N":
            go = False
    # 重置输入次数
    else:
        file = open("C:/Users/Lenovo/Desktop/user.txt","w")
        print(file_data)
        file.write(file_data)
        file.close()
 
 
posted @ 2020-06-04 20:14  码在江湖  阅读(471)  评论(1编辑  收藏  举报