1 #setencoding=utf-8
2 #用户名和密码输入正确,则登陆成功
3 #用户名正确密码错误,只再输入密码,有3次机会
4 #错误3次,则把用户名放入lock中
5 import os,sys
6 #存放用户名和密码的文件是E:\python\user.txt
7 accounts_file = 'E:\\python\\user.txt'
8 #被锁的用户要写入此文件
9 lock_file = 'E:\\python\\lock.txt'
10 #先读出来放内存中,免得每次输入用户后进行判断都要打开文件
11 user =file(accounts_file)
12 account_list=user.readlines()
13 user.close()
14 #控制是否退出while大循环的标识
15 loginSucess =False
16 #这里用的大while循环,所以用户名输不对,就会一直输,如果想限制用户名输入次数,那么while改成for
17 while True:
18 #raw_input是一个内置函数,获取用户输入,与用户建立交互
19 #strip()是忽略空格
20 username = raw_input('username:').strip()
21 #先判断用户名是否存在,用户名如果存在才继续,如果不存在,直接跳出循环,结束
22 if len(username)!=0:
23 #用户名如果不为空的时候,判断是不是存在
24 for i in account_list:
25 #i读到的是一行,而一行有2列,第1列就是索引为0的才是用户名,第二列索引为1的是密码
26 #split()方法是分隔符,默认是空格,
27 i = i.split()
28 if username==i[0]:#用户名正确
29 #用户名正确的时候,只给3次输入密码的机会
30 for x in range(3):
31 password = raw_input('password:').strip()
32 if password==i[1]:
33 loginSucess=True#如果为True的时候,直接走上上级for下的if,欢迎完就退出
34 break
35 #如果密码错误
36
37 #如果匹配正确或循环中有break就退出,,else不执行
38 else:
39 print '%s ,你已经输入错误密码3次了,going to lock ' %username
40 l = file(lock_file,'a')
41 l.write(username+'\n')
42 l.close()
43 view = file(lock_file)
44 print view.read()
45
46 if loginSucess is True:
47 print '登陆成功,welcome to my system!!!'
48 break #登陆成功就直接跳出while大循环
49 elif loginSucess is False: #这种是用户名输入错误,它的节点在用户不为空的条件之下 ,这里不能用break,不能跳出while大循环,因为我要你一直输,直到成功
50 print '用户名输入错误,请重新输入。'
51 else: #用户名也正确,输入密码不正确3次
52 print '%s,sorry ,输入密码3次错误你已被锁' % username
53 break
54 else:#用户名输入为空的时候
55 continue