zoukankan      html  css  js  c++  java
  • 路飞学城系列:第2章 数据类型&文件操作-练习(3)【模拟登陆-等待优化ing-读写不能同时进行ing】

    # coding: utf-8
    
    """
    练习题2 —— 模拟登陆:
    
        用户输入帐号密码进行登陆
        用户信息保存在文件内
        用户密码输入错误三次后锁定用户,下次再登录,检测到是这个用户也登录不了
    
        思路:
        1、创建一个文件,保存 “用户名”、“密码”、“锁定状态:UnLock”,文本内容如下:
            【
                牛魔王 abcde12345! UnLock
                李祯 123456 UnLock
            】
        2、用户输入账号、密码登录,写while循环,用户输入错误3次,修改“锁定状态:Lock”
    
    """
    
    
    
    # 接收输入的用户名
    user_name = input("请输入用户名:")
    
    # 记录用户输入密码错误次数
    input_error_count = 0
    
    # 记录登录状态
    login_status = True
    
    # 判断用户是否存在
    is_User = False
    
    #定义while循环,输入正确 或者 输入错误3次(锁定该账号)。
    while login_status:
    
        # 接收输入的密码
        user_pwd = input("请输入密码:")
    
        # 读取存放用户名、密码信息的文件
        read_user_info = open(r"D:Python_Python_Code_LZluffycity第一模块:开发基础第2章  数据类型&文件操作2.29、用py操作文件模拟登录.txt",
                              mode="r", encoding="utf-8")
        # 存放读取到的文件信息
        file_data = ""
    
        # 循环读取文件中的用户信息
        for line in read_user_info:
            line_list = line.split()
    
            # 如果用户名验证成功,账号未被锁定,密码验证成功,则登录成功。
            if user_name == line_list[0] and line_list[2] != "Lock" and user_pwd == line_list[1]:
                print("登录成功!")
    
                file_data += line
    
                # 设置结束程序
                login_status = False
    
                is_User = True
            # 如果用户名验证成功,账号未被锁定,密码验证不成功,则登录失败、继续去输入密码(输错3次锁定)。
            elif user_name == line_list[0] and line_list[2] != "Lock" and user_pwd != line_list[1]:
                input_error_count += 1
                # 输入密码错误不到3次,继续让用户输入密码
                if input_error_count != 3:
                    print("密码输入错误,您还有{1}次机会!".format(user_name, 3-input_error_count))
                    file_data += line
    
                # 输入密码错误达到3次,锁定用户账号,更新文件,并结束程序
                else:
                    print("密码输入错误!您已经输入错误3次,账号已锁定!")
                    line = line.replace("UnLock", "Lock")
                    file_data += line
    
                    # 设置结束程序
                    login_status = False
    
                is_User = True
            # 如果用户名验证成功,账号已经锁定,则结束程序。
            elif user_name == line_list[0] and line_list[2] == "Lock":
                print("该账号已锁定!")
                file_data += line
    
                # 设置结束程序
                login_status = False
    
                is_User = True
            # 如果当前输入的不是该用户名,则把该行记录一下
            elif user_name != line_list[0]:
                file_data += line
            else:
                file_data += line
    
        # 写入存放用户名、密码信息的文件
        write_user_info = open(
            r"D:Python_Python_Code_LZluffycity第一模块:开发基础第2章  数据类型&文件操作2.29、用py操作文件模拟登录.txt",
            mode="w", encoding="utf-8")
        write_user_info.write(file_data)
    
        # 关闭文件读取和写入
        read_user_info.close()
        write_user_info.close()
    
        # 判断用户是否存
        if is_User is False:
            print("用户不存在!")
            break
    

      

  • 相关阅读:
    第十周阅读内容
    第十周学习小结
    第九周阅读内容
    第九周学习小结
    第八周学习小结
    ..总结
    .总结
    总结.
    周总结
    总结
  • 原文地址:https://www.cnblogs.com/lizhen416/p/13610613.html
Copyright © 2011-2022 走看看