1 #!/usr/bin/env python
2 # -*- coding:utf-8 -*-
3
4 """
5 用户登陆功能实例
6 1、获取db文件中所有的用户信息
7 2、比较用户信息
8 如果用户名不存在,则直接退出
9 如果用户名存在
10 检测密码,如果密码存在,则提示登陆成功,并将登陆错误次数重置为 0 ,修改内存中的字典中记录的登陆错误次数。(并写入文件)
11 如果密码不存在
12 修改内存中的字典中记录的登陆错误次数
13
14 将最新的登陆错误次数和对应用户信息写入文件
15
16 """
17
18
19 # 读取用户信息到 user_info_list 中
20 read = file("db","r")
21 user_info_list = read.readlines()
22 read.close()
23
24 # 处理 user_info_list,以便之后的用户名和密码比较
25 # 处理后的结果: user_info_dict = {"alex": {"pwd": "112233", "times": 0}, "eric": {"pwd": "111111", "times": 0}}
26 user_info_dict = {}
27 for item in user_info_list:
28 user_info = item.split("|")
29 user_info_dict[user_info[0]] = {"pwd": user_info[1], "times": int(user_info[2].strip())}
30
31 while True:
32 username = raw_input("请输入用户名:")
33 # 用户名不存在
34 if username not in user_info_dict.keys():
35 print "用户名不存在,请重新输入!"
36 # 用户名存在
37 else:
38 # 判断登陆次数
39 if user_info_dict[username]["times"] > 3:
40 print "账户已经冻结,请联系管理员!"
41 break
42 else:
43 pwd = raw_input("请输入密码:")
44 if user_info_dict[username]["pwd"] == pwd:
45 # 如果登陆成功,将登陆次数重置为 0
46 user_info_dict[username]["times"] = 0
47 print "恭喜您 %s,登陆成功" % username
48 else:
49 # 如果登陆失败,将登陆次数加一
50 user_info_dict[username]["times"] += 1
51
52 # 将最新的登陆次数写入文件
53 temp_list = []
54 for key, value in user_info_dict.items():
55 temp = "%s|%s|%d" % (key, value["pwd"], value["times"])
56 temp_list.append(temp)
57 temp_str = " ".join(temp_list)
58 w_obj = file("db", "w")
59 w_obj.write(temp_str)
60 w_obj.flush()
61 w_obj.close()