# 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