老男孩-day1作业一

练习程序:编写登录接口

1. 输入用户名和密码

2. 认证成功后显示欢迎信息

3. 输错三次后锁定

 

程序思路:

1. 用文件user_database.txt当做数据库文件,用于验证用户、密码、密码错误次数、锁定状态。

    初始数据为:

admin password 1 1
user2 user2password 0 0
user1 user1password 1 0

2. 程序中f1的定义部分为,从文件中读取数据,并且生成字典。(此处本该使用函数的)

3. save_file() 函数,用于将字典保存到user_database.txt

4. 其余部分为判断用户和密码,错误次数、锁定状态等。

代码程序为:

 1 # coding: gbk
 2 
 3 # 定义将字典保存到文件user_database.txt的函数
 4 def save_file(dic):
 5     file_clear = open("F://PythonDay3//task//day1//user_database.txt","w")
 6     file_clear.close()
 7     for i in dic.items():
 8         item,value = i
 9         value1,value2,value3 = value    
10         file_open = open("F://PythonDay3//task//day1//user_database.txt","a")
11         file_open.write(item+" "+value1+" "+value2+" "+value3+"\n")
12         file_open.close()
13 
14 
15 # 从文件中取出数据,并以字典形式体现。字典格式为{"admin":["password","0","0"]}   分别代表的意思:用户、密码、错误次数、是否锁定(0代表未锁,1代表锁)
16 f1 = open("F://PythonDay3//task//day1//user_database.txt","r")
17 dic_user = {}
18 for line in f1:
19     user_name,user_pwd,lock_times,locked_status = line.split(" ")
20     dic_user[user_name] = [user_pwd,lock_times,locked_status.strip("\n")]
21 f1.close()
22 
23 
24 # 登录。通过while进行无限制循环,通过try进行异常处理,在使用Ctrl+C中断的时候,保存字典到文件。其余为判断用户和密码以及次数。
25 while 1:
26     try:
27         Input_user = input("请输入用户名:")        
28         Input_pswd = input("请输入密码:")
29         if Input_user in dic_user.keys() and dic_user[Input_user][0] == Input_pswd:
30             if dic_user[Input_user][2] == "0":
31                 print("You have logined")
32                 dic_user[Input_user][1] = "0"
33                 dic_user[Input_user][2] = "0"
34                 save_file(dic_user)
35             elif dic_user[Input_user][2] == "1":
36                 print("User %s is locked! Please contact adminstrator! Quiting" % Input_user)
37                 exit()
38         elif Input_user in dic_user and dic_user[Input_user][0] != Input_pswd:
39             if dic_user[Input_user][2] == "1":
40                 print("User %s is locked! Please contact adminstrator! Quiting" % Input_user)
41                 exit()
42             dic_user[Input_user][1] = str(int(dic_user[Input_user][1]) + 1)
43             if int(dic_user[Input_user][1]) >=3:
44                 print("您的密码输入错误 %s 次,已经锁定!请联系管理员" % dic_user[Input_user][1])
45                 dic_user[Input_user][2] = "1"
46                 dic_user[Input_user][1] = "0"
47                 save_file(dic_user)
48                 exit()
49             else:
50                 print("您的密码输入错误 %s 次" % dic_user[Input_user][1])
51         else:
52             print("没有该用户")
53     except KeyboardInterrupt:
54         save_file(dic_user)
55         exit()

 

posted @ 2016-07-21 08:54  loyfee  阅读(446)  评论(0编辑  收藏  举报