# 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