#!/usr/bin/env python3
# Author:Robert
# --*-- coding: utf-8 --*--
count
=
0
#记录试错次数,计数项赋初始值
load
=
True
#完成功能后退出,赋初始值
file
=
open
(
"用户信息文件.txt"
,
'r'
,encoding
=
'utf-8'
)
file_lock
=
open
(
"锁定用户信息文件.txt"
,
'r+'
,encoding
=
'utf-8'
)
line
=
eval
(
file
.readline())
#将正确信息中的字符串转换成字典(原字符串为字典格式)
line_list
=
eval
(file_lock.readline())
#将正确信息中的字符串转换成列表(原字符串为列表格式)
def
out():
#定义重复代码,目的是帮助跳出while循环并关闭已打开的文档
global
load
load
=
False
#赋值load,为了跳出while循环
file_lock.close()
#关闭正确用户信息文档
file
.close()
#关闭锁定用户信息文档
while
load:
#判断是否已完成功能
name
=
input
(
"请输入用户名:"
)
password
=
input
(
"请输入密码:"
)
if
name
in
line
and
name
not
in
line_list:
#判断用户名是否正确,是否已被锁定
while
count <
3
:
if
password
=
=
line[name]:
#判断用户名是否对应正确的密码
print
(
"您已成功登录"
)
out()
#调用定义out方法
break
else
:
#说明未输入的正确的密码
count
+
=
1
msg_count
=
'第%s次密码输入错误\n'
%
(count)
#提示输入错误次数
print
(msg_count)
if
count <
3
:
#小于三次错误的输入,可以重新输入
password
=
input
(
"密码错误,请重新输入密码:"
)
#重新输入密码
elif
count
=
=
3
:
#判断是否已输错三次
print
(
"已输错3次,账号已锁定"
)
line_list.append(name)
#将已锁定信息加入锁定元组中
file_lock.seek(
0
)
#输入指针移到开头,如果不移动会产生多个元组
file_lock.write(
str
(line_list))
#写入锁定信息
file_lock.tell()
#获取当前的输入指针位置,如果不获取会产生多个元组
out()
break
elif
name
in
line_list:
#判断用户名是否在已锁定用户名中
print
(
"该用户名已被锁定"
)
out()
break
else
:
#说明用户名不在正确用户名信息中
print
(
"该用户名不存在"
)
out()