天天看點

Python模拟登陸及個人經驗(五)

實驗名稱:模拟登陸

實驗要求:

輸入使用者名密碼

認證成功顯示歡迎資訊

輸錯三次鎖定使用者

思路:

使用者輸入username

判斷username是否為真(檔案)。

否:提示使用者不存在;是:判斷是否鎖定(檔案)

如果使用者鎖定提示:該使用者已鎖定;沒鎖定就輸入密碼

循環三次(判斷密碼是否正确)

密碼超過三次不正确,就寫入鎖檔案

流程圖:

<a href="https://s1.51cto.com/oss/201711/02/3f9b32d65712b0a8ed38ee85b603dd44.png-wh_500x0-wm_3-wmp_4-s_1835019730.png" target="_blank"></a>

    代碼實作:

#!/usr/bin/env python

#Author:Li QW

#加載sys子產品

import sys

#指定檔案路徑,這裡用的是絕對路徑

user_word='C:/Users/Administrator/Desktop/open.txt'  #使用者檔案

close_word='C:/Users/Administrator/Desktop/close.txt' #鎖使用者檔案

f=open(user_word,'r')  #打開檔案

user_info=f.read() # 讀取檔案

f.close() #讀取之後關閉檔案

user_lis= user_info.split("#") #以井号作為分隔符

dict = {} #導入字典

for item in user_lis:  #賦給變量item

    item_list=item.split(':') #以冒号作為分隔符

    dict[item_list[0]]=item_list[-1]    

count = 0 #計數器的作用

username = input("Input username:") #輸入使用者名

if username in dict:

    l=open(close_word,'r')

    black_info = l.read()

    l.close()

    black_list = black_info.split('#')

    lock_dict = {}

    for items in black_list:

        items_list = items.split(':')

        lock_dict[items_list[0]]=items_list[-1] #這裡注意,用-1 讀最後一行,我之前寫1 ,掉進坑裡爬不起來了。寫1,當檔案為空時,它會讀取不到這個參數就會報錯。

    if username in lock_dict: #如果在close.txt檔案有這個使用者,則提示該使用者已鎖!

        print("username close...")

        sys.exit() #退出

    else:

        while count &lt;3: #輸入次數小于三次繼續循環

            password = input("Input password:") #輸入密碼

            if password == dict[username]: #判斷密碼是否正确

                print("Welcome user login !")

                sys.exit()

            else:

                count +=1 #錯誤累加一次 (相當于count = count +1)

                if count ==3: #寫錯三次記錄到close.txt檔案中

                    l=open(close_word,'a') 

                    l.write("#%s:%s"%(username,dict[username]))

                    print("使用者輸錯三次被鎖定...")

                    sys.exit() #退出

                else: #提示還有幾次機會

                    print('您還有%s次機會'%(3-count)) 

else: #使用者不存在列印

    print("NO usernames...") 

附帶報錯内容: 

<a href="https://s4.51cto.com/oss/201711/02/f2c848760cbee0b07edaefd26e17d5b5.png-wh_500x0-wm_3-wmp_4-s_4222221847.png" target="_blank"></a>

心得體悟:

寫代碼容易,排錯難!做事要盡可能的考慮周全。走過的坑多了,自然就會熟悉。

本文轉自白羊IT51CTO部落格,原文連結:http://blog.51cto.com/000011211684/1978403,如需轉載請自行聯系原作者