1. 程式人生 > >python 登入三次鎖定

python 登入三次鎖定

要求:

  1. 輸入使用者名稱,密碼
  2. 認證成功顯示歡迎資訊
  3. 輸入錯誤三次後鎖定使用者

Readme:

  1.normal_user是存放使用者id及密碼的檔案

  2.lock_file是存放被鎖定的使用者id的文件,預設為空.

  3.程式會對normal_user裡的合法使用者id進行判斷,若連續輸入使用者id錯誤達三次程式直接退出.

  4.程式會輸入對正確使用者名稱後的密碼進行判斷,輸入密碼有3次機會,連續三次錯誤則會鎖定使用者id並且退出.

流程圖:

  

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time    : 2016/12/1 15:24
# @Author  : zjz10
# @Site    : 
# @File    : login_interface.py
# @Software: PyCharm
import os,sys,getpass   #匯入os,sys,getpass 模組
os.system('cls')        #使用os模組中的system方法傳入('cls')引數,達到清屏的效果
#os.system('clear')     #這是在linux中清屏的方法
u = 0                   #使用者的迴圈次數
while u < 3:            #只要使用者登入異常不超過3次就不斷迴圈
    username = input('請輸入您的使用者名稱:')       #使用input 使使用者輸入並賦值給username變數

    lock_f = open('lock_file','r+')             #開啟lock_file檔案,許可權是讀取更新,並賦值給lock_f變數
    lock_list = lock_f.readlines()              #使用.readlines()的方法逐行讀取lock_file檔案,並賦值給lock_list變數

    for lock_line in lock_list:                 #使用for迴圈讀取lock_file的內容
        lock_line = lock_line.strip('\n')       #使用.strip()的方法去點換行符
        if username == lock_line:               #使用if 進行判斷使用者輸入的引數在lock_file檔案中是否存在
            print('使用者 %s 已經鎖定,請聯絡您的系統管理員' % username)   #如果存在列印輸出
            sys.exit(1)                         #sys模組的.exit()方法表示退出

    #user_f = open('normal_user','r')               #這樣的方式也是可行的
    #user_list = user_f.readlines()                 #這樣的方式也是可行的

    with open('normal_user','r') as user_f:         #使用with open開啟normal_user檔案,許可權是隻讀,並as賦值給
        user_list = user_f.readlines()              #使用.readlines()的方法逐行讀取normal_user檔案,並賦值給user_list變數

    for user_line in user_list:                     #使用for迴圈讀取normal_user的內容
        (user,passwd) = user_line.strip('\n').split()   #分別獲取帳號和密碼資訊
        if username == user:                            #使用if判斷使用者輸入的使用者是否在normal_user中存在
            p = 0                                       #輸入密碼的迴圈次數
            while p < 3:                                #只要使用者登入異常不超過3次就不斷迴圈
                password = getpass.getpass('請輸入您的密碼:')      #使用getpass模組的.getpass方法讓使用者輸入密碼(輸入的時候不會顯示)
                if password == passwd:                  #使用if判斷使用者輸入的密碼在normal_user中是否存在(相等)
                    print('歡迎 %s 登入系統' %username)   #使用者名稱密碼全部相等(存在)列印歡迎登入資訊
                    sys.exit(0)                           #sys模組中的.exit()方法退出
                else:
                    if p != 2:                              #p=2時,是最後一次機會,不用在提示還剩餘0次機會了
                        print('對不起,%s 的密碼錯誤,請重新輸入,你還有 %d 次機會'%(username,2 - p))
                p += 1                                      #密碼輸入錯誤後,迴圈值增加1
            else:
                lock_f.write(username + '\n')
                #lock_f.write('%s \n' %username)
                sys.exit('對不起 %s 使用者已經鎖定,請聯絡管理員' % username)
        else:
            pass                                                  #當用戶沒匹配時,跳過並繼續迴圈
    else:
        if u != 2:                                          #i=2時,是最後一次機會,不用在提示還剩餘0次機會了
            print('對不起,%s 輸入錯誤,請重新輸入,你還有 %d 次機會' %(username,2 - u))
    u += 1                                                  #當用戶輸入錯誤時,迴圈值增加1
else:
    sys.exit('因為你的錯誤輸入,程式已經退出,請重新執行')           #使用者輸入三次錯誤後,異常退出
lock_f.close()          #關閉lock_f檔案
#user_f.close()

轉載自 Brain Zhu 的部落格,原文連結

相關推薦

python 登入鎖定

要求:輸入使用者名稱,密碼認證成功顯示歡迎資訊輸入錯誤三次後鎖定使用者Readme:  1.normal_user是存放使用者id及密碼的檔案  2.lock_file是存放被鎖定的使用者id的文件,預設為空.  3.程式會對normal_user裡的合法使用者id進行判斷,

python之路--實現登入鎖定功能

0x00 上次面試時問我是否在學python,我以前也接觸過,但是到了字典那兒怎麼也明白不了,然後不了了之,也從網上學過爬蟲,還是記得一丁點東西的,嘻嘻 最近在跟著老男孩學習python,Alex講師說過一句話,人總是高看自己。這點我是比較認同的,總是覺得自

Python 模擬用戶登錄,登錄失敗鎖定賬號並寫入文件

python3 列表 文件讀寫 登錄要求: 1、用戶輸入登錄賬號 、密碼,登錄成功顯示歡迎用戶登錄界面 2、 用戶可以嘗試三次登錄,三次登錄失敗後,將鎖定用戶,並輸出到新的文件當中。count = 0 while count < 3 : file1 = open("

python寫的模擬系統登入驗證簡單程式

    由於工作需要,最近在學習python,看了網上的python視訊教程,有個用python寫的模擬系統登入三次驗證的需求。因本人原來就是開發出身,讓我燃起了寫程式的慾望。     通過這個簡單的程式,我不僅新認識了一種程式語言,還讓自己學了不少知識,比如:python

python實現使用者登入重試

主要實現的是: 設定初始使用者名稱和登入密碼; 進入登入頁面,提醒輸入使用者輸入使用者名稱和密碼; 若使用者名稱輸錯則重新輸入,若使用者登入密碼輸錯三次則重新開始輸入使用者名稱和使用者登入密碼;

python-day27(握手,四揮手)

一. Osi七層 二.  三次握手 四次揮手(重點) 3次握手: A約嗎>>>B約啊>>>A收到 4次揮手: A分手吧>>>B讓我考慮下>>>.B分吧>>>>A再見 三. Tcp和Udp的

python週末大作業

''' s18第三週週末⼤作業 模擬部落格園系統: 1. 啟動程式, 顯⽰選單列表 選單: 1. 登入 2. 註冊 3. ⽂章 4. ⽇記 5. 退出 2. ⽤戶輸入選項, ⽂章和⽇記必須在登入後才可以進⾏操作.(裝飾器) 3. ⽤戶註冊,

實現登陸功能,登陸鎖定使用者

目標:實現登陸功能,登陸三次鎖定使用者,沒有資料庫,用txt文字實現 name.txt liubei|123456|3zhugeliang|654321|3zhangfei|123|3machao|321|3zhangsan|1122333|3lisi|1231|3 file1 =

python實現簡單的使用者密碼登入控制(輸入鎖定使用者)

問題描述 我們經常在登入一些網站的時候,發現我們如果連續的輸錯好幾次密碼,我們的帳號就被鎖定起來了,那這個過程是如何實現的呢?本程式主要就是解決以下3件事情 1.輸入使用者名稱密碼 2.認證成功並顯示歡迎資訊 3.輸錯三次後鎖定 解決辦法

python-使用者登入機會)

題目:使用者登入(三次機會) 描述 給使用者三次輸入使用者名稱和密碼的機會,要求如下: 1)如輸入第一行輸入使用者名稱為‘Kate’,第二行輸入密碼為‘666666’,輸出‘登入成功!’,退出程式; 2)當一共有3次輸入使用者名稱或密碼不正確輸出“3次使用者名稱或者密

Python練習:使用者登入機會)

描述 給使用者三次輸入使用者名稱和密碼的機會,要求如下: 1)如輸入第一行輸入使用者名稱為‘Kate’,第二行輸入密碼為‘666666’,輸出‘登入成功!’,退出程式; 2)當一共有3次輸入使用者

Python(45)_登入驗證(結合檔案操作)

#-*-coding:utf-8-*- ''' 三次登入再次優化,利用檔案操作這個程式注意:1、把使用者名稱和密碼以w方式寫進去時候,是怎麼實現換行的? format的用法 2、把檔案讀出來的時候,是怎麼讀的,是怎麼去掉換行符的? 迴圈放到列表裡 ''' lis= [] us

python入門——使用者登入機會)

使用者登入(三次機會) 描述 給使用者三次輸入使用者名稱和密碼的機會,要求如下: 1)如輸入第一行輸入使用者名稱為‘Kate’,第二行輸入密碼為‘666666’,輸出‘登入成功!’,退出程式;

python實現簡單登入驗證--輸入機會

def login():    i = 1    while True:        name = input("請輸入使用者名稱:")        if name != "tarena":            print('"使用者名稱錯誤,請重新輸入"')     

實現用戶登錄並且輸入錯誤鎖定該用戶

賬號 else input 實現 break div arm pen locked 我的測試環境,win7,python3.6,Pycharm社區版 提示輸入用戶名,和密碼 判斷是否被鎖定 判斷用戶名和密碼是否匹配 輸入錯誤三次,賬號被鎖定 real_user = ‘ch

Python3 模擬用戶密碼輸入錯誤後鎖定

[1] lac () pri split bre col 鎖定 註冊 #locklist.txt模擬鎖定用戶列表 格式如下 #user1 #user2 #userlist.txt模板註冊用戶列表 格式如下 # user1:password1 # user2:passwo

Python實現簡單的登錄

退出 初始 class for highlight 執行 count isa bre Python實現簡單的三次登錄 方法一: count = 1 # 定義初始值為1 while count <= 3:

python 三級菜單 while循環,湖北省市-縣-街道的選擇,3個while的循環 -day2

字典 utf ems Coding nbsp 上海 orm map [] python編寫一個三級while的循環菜單 1.定義字典,字典裏面嵌套字典,內嵌字典的值為列表。 思路: 湖北省的市:字典中的定義3個字典,用於存儲{序列-鍵:市名} shiqu_dir = {}

用戶登錄鎖定

python腳本需求 編寫登陸接口 讓用戶輸入用戶名密碼 認證成功後顯示歡迎信息 輸錯三次後退出程序 可以支持多個用戶登錄 用戶3次認證失敗後,退出程序,再次啟動程序嘗試登錄時,還是鎖定狀態測試信息 用戶 密碼 alex