1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
一、功能要求
登录接口小程序(需实现的功能如下)
1
、输入用户名和密码
2
、认证成功后显示欢迎信息
3
、输错三次后锁定
二、逻辑思路分析:
定义一个文件用于存储用户名和密码:passwd.db
定义一个文件用于记录输入
3
次错误后的用户名,以判断文件里的用户名来决定用户是否为锁定状态 lock_user.db
定一个变量为
3
,用于输错密码最多次数 count
=
3
定一个变量为
0
,用于输错一次自动增加
1
inter
=
0
定义一个变量login_status作为标志位,默认值为login_status
=
False
,为false的目地也就是说登录失败。如果用户登录成功后那么就赋值为
True
。
1
、输入用户名和密码
2
、输入用户名之后,检测账户是否是锁定,那么需打开lockfile文件,循环读取每一行的用户名,判断是否此用户已经存在lock文件里,如果用户存在,则提示用户已被锁定,且退出程序,如果账户名不存在lockfile文件里,则继续往下执行
3
、打开userdbfile,循环读取每一行,且分割用户名和密码,分别存储在userdb、passwddb变量里。接着将输入的用户名和密码分别与这两个变量进行匹配,如果相等,则提示验证通过,且将标志位match_flag赋值为
True
,且终止循环。如果输入的密码是不正确的,那么标志位不变,也就还是为
False
。
4
、接着判断标志位,如果为false,则说明没有匹配上,提示重试登录,且同时将count增
1
,如果不为false,也就是为true。则提示登录系统完成
|
三、代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
|
#!/usr/bin/env python
#_*_ coding:utf-8 _*_
#注册用户名和密码,数据写入在文件里
#输入用户和密码
#认证成功后显示欢迎信息
#输错三次后锁定
#!/usr/bin/env python
import
shelve
#账户添加(可单独调用该函数执行即可)
def
adduser(name,passwd):
files
=
shelve.
open
(
"passwd.db"
)
files[name]
=
passwd
files.close()
def
check(name,passwd):
db
=
dict
(shelve.
open
(
"passwd.db"
))
lock
=
dict
(shelve.
open
(
"lock_user.db"
))
if
lock.get(name,
None
) !
=
None
:
print
'账户处于锁定状态,请与管理员联系'
return
False
if
db.get(name,
None
)
=
=
None
:
print
'用户名不存在'
return
False
if
passwd !
=
db.get(name):
print
'密码错误'
return
False
else
:
return
True
if
__name__
=
=
'__main__'
:
inter
=
0
count
=
3
login_status
=
False
while
inter < count:
name
=
raw_input
(
'账号:'
)
passwd
=
raw_input
(
'口令:'
)
if
check(name,passwd)
=
=
True
:
login_status
=
True
print
'认证通过'
break
else
:
inter
+
=
1
print
'还可尝试%s次登录'
%
(
3
-
inter)
continue
if
login_status
=
=
False
:
files
=
shelve.
open
(
"lock_user.db"
)
files[name]
=
name
files.close()
print
'账户被锁定'
|
本文转自 TtrToby 51CTO博客,原文链接:http://blog.51cto.com/freshair/1869246