【Python自學】簡易密碼合法性檢視程式

Python簡易程式碼:檢視合法性程式碼

 

我將簡單撰寫一個檢視密碼合法性的程式碼,來驗證用戶所輸入的字串是否符合平台的規則。

目的:複習if/else條件句、邏輯運算子、函式應用

 

我的規則如下:

1、需大於8個字元

2、需包含數字及英文大小寫

3、不可有符號

 

#密碼檢視合法性

password = input("請輸入密碼:")

 

# 1. 檢查長度是否 > 8

if len(password) <= 8:

    print("密碼長度不足,需要大於 8 個字元")

# 2. 檢查是否只包含英文與數字 (不允許符號)

elif not password.isalnum():

    print("密碼只能包含英文字母與數字,不可含有符號")

# 3. 檢查是否至少有一個大寫、一個小寫、一個數字

elif not any(c.isupper() for c in password):

    print("密碼需包含至少一個大寫字母")

elif not any(c.islower() for c in password):

    print("密碼需包含至少一個小寫字母")

elif not any(c.isdigit() for c in password):

    print("密碼需包含至少一個數字")

else:

    print("密碼合法 ")

 

字串函式重點整理

len(password) → 測長度

password.isalnum() → 判斷是否只有 英文 + 數字

any() + isupper() → 是否有大寫

any() + islower() → 是否有小寫

any() + isdigit() → 是否有數字

 

範例測試

abc 長度不足

abcdefghi 需包含大小寫與數字

Abcdefghi 需包含數字

Abcd12345     合法

Abcd123!! 不可有符號

 

【補充】關於上面使用的走訪程式語言說明

也就是這一段:

elif not any(c.isupper() for c in password):

    print("密碼需包含至少一個大寫字母")

 

拆解理解

1for c in password

代表「把密碼字串逐字拿出來」

例如密碼是 "Abc123"

那麼我在這一段程式碼裡面所定義的【c】,會依序變成:'A', 'b', 'c', '1', '2', '3'

 

2c.isupper()

isupper() 函式會檢查這個字元是不是大寫字母

例如:

'A'  True

'b'  False

'1'  False

 

3any(...)

any() 會檢查「裡面有沒有至少一個 True

 

所以這段python複製程式碼

any(c.isupper() for c in password)

意思是:「在密碼裡面,只要有任何一個字元是大寫字母,結果就是 True

 

4、邏輯運算子not

剛剛那一段的結果「在密碼裡面,只要有任何一個字元是大寫字母,結果就是 True

而我們的條件是要檢查 「沒有大寫字母」 時才要印錯誤訊息,所以用 not 反轉結果。

簡言之,就是「裡面沒有任何大寫字母,就是false,反之為true

 

 

留言

這個網誌中的熱門文章

常見的化痰粉愛克痰(小鳥粉)怎麼吃?|化痰粉成人及小孩的使用劑量|紅色與藍色比較

麻將教學懶人包|從規則到牌理的完整觀念整理(附實戰心得)

麻將新手必看!不知道聽什麼牌怎麼辦?超多種實戰聽牌範例,教你怎麼判斷胡牌機會