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