python:編寫登陸介面(day 1)

来源:http://www.cnblogs.com/alan-babyblog/archive/2016/01/18/5140144.html
-Advertisement-
Play Games

作業要求:輸入用戶名,密碼認證成功顯示歡迎信息輸入錯誤三次後鎖定用戶Readme1.user_id.txt是存放用戶id及密碼的文件2.user_lock.txt是存放被鎖定的用戶id的文檔,預設為空.3.程式會對user_id.txt里的合法用戶id進行判斷,若連續輸入用戶id錯誤達三次程式直接退...


作業要求:

  1. 輸入用戶名,密碼
  2. 認證成功顯示歡迎信息
  3. 輸入錯誤三次後鎖定用戶

Readme

1.user_id.txt是存放用戶id及密碼的文件

2.user_lock.txt是存放被鎖定的用戶id的文檔,預設為空.

3.程式會對user_id.txt里的合法用戶id進行判斷,若連續輸入用戶id錯誤達三次程式直接退出.

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

 

流程圖:

 

 

代碼:

#!/user/binenv python3
# -*- coding:utf-8 -*-

'''
Created on: 2015年1月16日

@author: 呂毅

Email: [email protected]

Version: 1.0

Description: 輸入用戶名密碼,認證成功顯示歡迎信息,認證失敗,輸錯三次後鎖定


'''

import sys,os,getpass


os.system('clear')                                                  #把終端代碼頁面清空,提供個乾凈的視覺
i = 0
while i < 3:                                                        #只要用戶登錄異常不超過3次就不斷迴圈
    username = input("請輸入用戶名:")

    lock_file = open('user_lock.txt','r+')                          #當用戶輸入用戶名後,打開LOCK 文件 以檢查是否此用戶已經LOCK了
    lock_list = lock_file.readlines()

    for lock_line in lock_list:                                     #迴圈LOCK文件
        lock_line = lock_line.strip('\n')                           #去掉換行符
        if username == lock_line:                                   #如果LOCK了就直接退出
            sys.exit('=======WARNING:該賬號 %s 已經被凍結========' % username)

    user_file = open('user_id.txt','r')                             #打開帳號文件
    user_list = user_file.readlines()
    for user_line in user_list:                                     #對帳號文件進行遍歷
        (user,password) = user_line.strip('\n').split()             #分別獲取帳號和密碼信息
        if username == user:                                        #如用戶名正常匹配
            m = 0
            while m < 3:                                            #只要用戶密碼異常不超過3次就不斷迴圈
                passwd = getpass.getpass('請輸入密碼:')              #輸入密碼,相對安全
                if passwd == password:                              #密碼正確,提示歡迎登錄
                    print('HI,%s,歡迎登錄系統' % username)
                    sys.exit(0)                                     #正常退出
                else:
                    if m != 2:                                      #m=2時,是最後一次機會,不用在提示還剩餘0次機會了
                        print('用戶 %s 密碼錯誤,請重新輸入,還有 %d 次機會' % (username,2 - m))
                m += 1                                              #密碼輸入錯誤後,迴圈值增加1
            else:
                lock_file.write(username + '\n')                    #密碼輸入三次錯誤後,將該用戶追加到LOCK文件
                sys.exit('用戶 %s 達到最大登錄次數,請聯繫管理員!!' % username)
        else:
            pass                                                    #當用戶沒匹配時,跳過並繼續迴圈
    else:
        if i != 2:                                                  #i=2時,是最後一次機會,不用在提示還剩餘0次機會了
            print('用戶 %s 不存在,請重新輸入,還有 %d 次機會' % (username,2 - i))
    i += 1                                                          #當用戶輸入錯誤時,迴圈值增加1
else:
    sys.exit('用戶 %s 不存在,退出' % username)                           #用戶輸入三次錯誤後,異常退出

lock_file.close()                                                   #關閉lock文件
user_file.close()                                                   #關閉user_id文件

  

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 該文章為原創,日後可能會根據實際開發經驗和網友評論,進行相應地方修改,為獲得最新博客動態,望在轉發博客的時候註明出處。觸發器要實現的功能:(1)獲取對錶Table1數據操作操作類型(insert、delete或update)。(2)將表修改後的數據保存到表Table2(該表結構與Table1表結構類...
  • 一. 將bootloader燒入SD卡 1.格式化SD卡(不掛載): fdisk /dev/sdx -d 刪除 -n 新建分區 -w 保存退出 6~default sdx1 兩種格式化方式: mkfs -t vfat /dev/sdx1 ...
  • 一.概述 上一篇,介紹了互斥量。條件變數與互斥量不同,互斥量是防止多線程同時訪問共用的互斥變數來保護臨界區。條件變數是多線程間可以通過它來告知其他線程某個狀態發生了改變,讓等待在這個條件變數的線程繼續執行。通俗一點來講:設置一個條件變數讓線程1等待在一...
  • 命令簡介: 該命令用於密碼時效管理。它可以修改賬號和密碼的有效期。對於chage命令的描述如下所示: The chage command changes the number of days between password changes and the date of the last pass...
  • 一.概述 互斥量是線程同步的一種機制,用來保護多線程的共用資源。同一時刻,只允許一個線程對臨界區進行訪問。互斥量的工作流程:創建一個互斥量,把這個互斥量的加鎖調用放在臨界區的開始位置,解鎖調用放到臨界區的結束位置。當內核優先把某個線程調度到臨界區的開始...
  • 2016年最新64位win7系統快速版 V2016年1月軟體介紹2016年最新64位win7系統快速版 V2016年1月, 系統具有更安全、更穩定、更人性化等特點。集成最常用的裝機軟體,集成最全面的硬體驅動,精心挑選的系統維護工具,加上純凈版獨有人2016年最新32位win7系統快速版 V2016年...
  • 之前安裝 Microsoft Sql Server 2012 R2 的時候總是報這樣的錯誤:SQL Server Setup has encountered the following error:The SQL Server license agreement cannot be located ...
  • 一、簡介 Typist (gtypist)是一個打字練習軟體,用來提升打字的速度。 二、安裝 1)源碼方式 http://ftp.gnu.org/gnu/gtypist/ 三、使用 http://blog.chinaunix.net/uid-28503021-id-3944296.html 四、其他...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...