#setencoding=utf-8 #用戶名和密碼輸入正確,則登錄成功 #用戶名正確密碼錯誤,只再輸入密碼,有3次機會 #錯誤3次,則把用戶名放入lock中 import os,sys #存放用戶名和密碼的文件是E:\python\user.txt accounts_file = 'E:\\python\\user.txt' #被鎖的用戶要寫入此文件 lock_file = 'E:\\python\\lock.txt' #先讀出來放內存中,省得每次輸入用戶後進行判斷都要打開文件 user =file(accounts_file) account_list=user.readlines() user.close() #控制是否退出while大循環的標識 loginSucess =False #這裏用的大while循環,因此用戶名輸不對,就會一直輸,若是想限制用戶名輸入次數,那麼while改爲for while True: #raw_input是一個內置函數,獲取用戶輸入,與用戶創建交互 #strip()是忽略空格 username = raw_input('username:').strip() #先判斷用戶名是否存在,用戶名若是存在才繼續,若是不存在,直接跳出循環,結束 if len(username)!=0: #用戶名若是不爲空的時候,判斷是否是存在 for i in account_list: #i讀到的是一行,而一行有2列,第1列就是索引爲0的纔是用戶名,第二列索引爲1的是密碼 #split()方法是分隔符,默認是空格, i = i.split() if username==i[0]:#用戶名正確 #用戶名正確的時候,只給3次輸入密碼的機會 for x in range(3): password = raw_input('password:').strip() if password==i[1]: loginSucess=True#若是爲True的時候,直接走上上級for下的if,歡迎完就退出 break #若是密碼錯誤 #若是匹配正確或循環中有break就退出,,else不執行 else: print '%s ,你已經輸入錯誤密碼3次了,going to lock ' %username l = file(lock_file,'a') l.write(username+'\n') l.close() view = file(lock_file) print view.read() if loginSucess is True: print '登錄成功,welcome to my system!!!' break #登錄成功就直接跳出while大循環 elif loginSucess is False: #這種是用戶名輸入錯誤,它的節點在用戶不爲空的條件之下 ,這裏不能用break,不能跳出while大循環,由於我要你一直輸,直到成功 print '用戶名輸入錯誤,請從新輸入。' else: #用戶名也正確,輸入密碼不正確3次 print '%s,sorry ,輸入密碼3次錯誤你已被鎖' % username break else:#用戶名輸入爲空的時候 continue