溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Python編程快速上手——強(qiáng)口令檢測(cè)算法案例分析

發(fā)布時(shí)間:2020-08-19 17:28:37 來(lái)源:腳本之家 閱讀:121 作者:授我以驢 欄目:開發(fā)技術(shù)

本文實(shí)例講述了Python強(qiáng)口令檢測(cè)算法。分享給大家供大家參考,具體如下:

強(qiáng)口令檢測(cè)

題目如下:

  • 寫一個(gè)函數(shù),它使用正則表達(dá)式,確保傳入的口令字符串是強(qiáng)口令。強(qiáng)口令定義:長(zhǎng)度不少于8個(gè)字符,同時(shí)包含大寫和小寫字符,至少含有一個(gè)數(shù)字??赡苄枰鄠€(gè)正則表達(dá)式來(lái)測(cè)試字符串,以保證其強(qiáng)度。

思路如下:

  • 分析題目得到:
    – 程序需要編寫一個(gè)函數(shù)
    – 用戶輸入強(qiáng)口令
    – 需要用正則表達(dá)式進(jìn)行判定是否符合條件
  • 因此代碼需要做以下幾點(diǎn):
    – 導(dǎo)入正則表達(dá)式庫(kù) import re
    – input()函數(shù)用于用戶輸入
    – 定義一個(gè)函數(shù)
    – 函數(shù)需要包含正則表達(dá)式對(duì)象及判定條件
    – while循環(huán)重復(fù)輸入,重復(fù)調(diào)用函數(shù)進(jìn)行判定

  • 著重分析強(qiáng)口令的三個(gè)條件
    – 條件一:長(zhǎng)度不少于8個(gè)字符。使用點(diǎn)-星(.*)匹配所有字符,加上括號(hào)形成單獨(dú)的分組,至少8個(gè)字符采用花括號(hào){}匹配特定次數(shù),{8,}。
    – 條件二:同時(shí)包含大小寫。同時(shí)包含,即匹配至少一次或多次采用+,加號(hào)。大寫小寫字符針對(duì)英文,因此采用方括號(hào)[],自定義字符分類。[a-z]+[A-Z]
    –條件三:至少含有一個(gè)數(shù)字。至少的含義依舊是匹配一次或多次,采用加號(hào),+,。數(shù)字用方括號(hào)自定義字符分類[0-9]。+[0-9]

以下是代碼

import re
print("強(qiáng)口令要求:字符串長(zhǎng)度不少于8個(gè),同時(shí)包含大小寫,且至少含有一位數(shù)字。")
strongStr = input("請(qǐng)輸入一個(gè)強(qiáng)口令:")

def strongPassword(str): #定義正則表達(dá)式函數(shù)
  lengthRex = re.compile(r'(.*){8,}[a-z]+[A-Z]+[0-9]') # 創(chuàng)建正則表達(dá)式對(duì)象
  if lengthRex.search(str) == None: #如果字符串str中沒(méi)有找到該正則表達(dá)式模式,search()方法則返回None
    return False
  if lengthRex.search(str) == True:
    return True

while strongPassword(strongStr) == False: #判斷函數(shù)返回值是否為False,循環(huán)調(diào)用函數(shù)strongPassword()
  print('口令強(qiáng)度不夠!請(qǐng)重新輸入:')
  strongStr = input() #重新輸入更新字符變量
  strongPassword(strongStr)#再次調(diào)用函數(shù)
else:
  print('Nice!強(qiáng)口令強(qiáng)度足夠,可以使用!')

輸出結(jié)果

Python編程快速上手——強(qiáng)口令檢測(cè)算法案例分析

PS:這里再為大家提供兩款相關(guān)在線工具供大家參考使用:

密碼安全性在線檢測(cè):
http://tools.jb51.net/password/my_password_safe

高強(qiáng)度密碼生成器:
http://tools.jb51.net/password/CreateStrongPassword

更多關(guān)于Python相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Python數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Python Socket編程技巧總結(jié)》、《Python函數(shù)使用技巧總結(jié)》、《Python字符串操作技巧匯總》、《Python入門與進(jìn)階經(jīng)典教程》及《Python文件與目錄操作技巧匯總》

希望本文所述對(duì)大家Python程序設(shè)計(jì)有所幫助。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI