1. 程式人生 > >判斷登陸用戶名和密碼是否正確-記事本存用戶名密碼

判斷登陸用戶名和密碼是否正確-記事本存用戶名密碼

count 交互 else username nes 函數 空格 port body

#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

判斷登陸用戶名和密碼是否正確-記事本存用戶名密碼