zoukankan      html  css  js  c++  java
  • 使用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()
     
     
  • 相关阅读:
    Javascript 使用字符串
    JavaScript精简学习4(动态表单和链接处理)
    JavaScript 使用表单
    事半功倍之Javascript (2)
    jQuery隐藏按钮
    .NET线程同步之Interlocked和ReadWrite 锁线程同步——事件构造
    linux命令汇总
    好的设计能减少大量的工作
    Prism学习笔记
    编写C函数的技巧
  • 原文地址:https://www.cnblogs.com/mcjhcnblogs/p/13045805.html
Copyright © 2011-2022 走看看