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

這篇要用 Python 寫一個簡易的密碼合法性檢查程式,透過條件判斷與字串方法,檢查使用者輸入的密碼是否符合指定規則。

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

很多平台在註冊帳號時,都會要求使用者設定符合規則的密碼,例如長度要夠、要有英文大小寫、要包含數字,甚至不能包含特殊符號。

這次我們就用 Python 寫一個簡單的密碼合法性檢查程式,來練習條件判斷與字串方法。

🎯 練習目的

這個小程式主要用來複習以下幾個 Python 基礎觀念:

  • if / elif / else 條件判斷:依照不同情況輸出不同提示。
  • 邏輯運算子:使用 not 判斷條件是否不成立。
  • 字串方法:使用 isalnum()isupper()islower()isdigit()
  • 內建函式:使用 len()any()

📏 密碼檢查規則

這次設定的密碼規則如下:

  • 規則 1:密碼長度需大於 8 個字元。
  • 規則 2:密碼需包含英文大寫、小寫與數字。
  • 規則 3:密碼不可包含符號,只能使用英文字母與數字。
也就是說,像 Abcd12345 這種密碼會通過檢查;但 Abcd123!! 因為包含符號,所以不合法。

🧪 完整程式碼

以下是簡易密碼合法性檢查程式。

# 密碼檢視合法性 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("密碼合法 ✅")
這個版本會依序檢查密碼規則。只要其中一個條件不符合,就會印出對應的錯誤提示,後面的條件就不會繼續判斷。

🔎 程式邏輯說明

這支程式使用 if / elif / else 由上往下檢查密碼是否合法。

1. 檢查密碼長度

if len(password) <= 8: print("密碼長度不足,需要大於 8 個字元")

len(password) 會計算密碼字串的長度。

因為規則是「需大於 8 個字元」,所以如果長度小於或等於 8,就代表不符合規則。

2. 檢查是否包含符號

elif not password.isalnum(): print("密碼只能包含英文字母與數字,不可含有符號")

password.isalnum() 會判斷字串是否只包含「英文或數字」。

  • 如果密碼只包含英文字母與數字,結果會是 True
  • 如果密碼包含符號,例如 !@_,結果會是 False

這裡使用 not,代表「如果不是英數組合」,就印出錯誤訊息。

3. 檢查是否包含大寫字母

elif not any(c.isupper() for c in password): print("密碼需包含至少一個大寫字母")

這段程式會逐一檢查密碼中的每個字元,只要有任何一個字元是大寫字母,就會通過這個條件。

如果完全沒有大寫字母,any() 的結果會是 False,再經過 not 反轉成 True,因此印出錯誤訊息。

4. 檢查是否包含小寫字母

elif not any(c.islower() for c in password): print("密碼需包含至少一個小寫字母")

islower() 會判斷字元是否為小寫英文字母。

如果密碼中完全沒有小寫字母,就會印出「密碼需包含至少一個小寫字母」。

5. 檢查是否包含數字

elif not any(c.isdigit() for c in password): print("密碼需包含至少一個數字")

isdigit() 會判斷字元是否為數字。

如果密碼中沒有任何數字,就會印出「密碼需包含至少一個數字」。

6. 全部通過就輸出合法

else: print("密碼合法 ✅")

如果前面的所有錯誤條件都沒有成立,就代表密碼符合所有規則,因此進入 else

🧰 字串函式重點整理

這支程式使用了幾個很常見的 Python 字串方法與內建函式。

函式 / 方法 用途 範例說明
len(password) 計算字串長度。 判斷密碼是否大於 8 個字元。
password.isalnum() 判斷是否只包含英文與數字。 用來排除符號。
any() 檢查一組條件中是否至少有一個為 True。 判斷密碼中是否至少有一個符合條件的字元。
isupper() 判斷字元是否為大寫字母。 檢查是否包含大寫英文。
islower() 判斷字元是否為小寫字母。 檢查是否包含小寫英文。
isdigit() 判斷字元是否為數字。 檢查是否包含數字。

🧪 範例測試

下面整理幾組測試資料,看看不同密碼會得到什麼結果。

輸入密碼 判斷結果 原因
abc 不合法 長度不足。
abcdefghi 不合法 缺少大寫字母與數字。
Abcdefghi 不合法 缺少數字。
Abcd12345 合法 ✅ 長度足夠,且包含大寫、小寫與數字。
Abcd123!! 不合法 包含符號。
小提醒:因為程式使用 if / elif / else,所以只會顯示第一個被檢查到的錯誤,不會一次列出所有錯誤。

🧠 補充:any(c.isupper() for c in password) 怎麼理解?

程式中比較不直覺的部分,可能是這一段:

elif not any(c.isupper() for c in password): print("密碼需包含至少一個大寫字母")

這段看起來有點長,但拆開來看其實很好理解。

1. for c in password

for c in password 的意思是:把密碼字串逐字拿出來檢查。

例如密碼是:

"Abc123"

那麼變數 c 會依序變成:

'A' 'b' 'c' '1' '2' '3'

2. c.isupper()

c.isupper() 會檢查目前這個字元是不是大寫字母。

字元 c.isupper()
'A' True
'b' False
'1' False

3. any(...)

any() 會檢查一串結果裡面,有沒有至少一個是 True

例如:

any([True, False, False])

結果會是:

True

因為裡面至少有一個 True

4. 加上 not 之後

原本這段:

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

意思是:

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

但我們想檢查的是「沒有大寫字母」時要顯示錯誤,所以前面加上 not

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

意思就變成:

如果密碼裡面沒有任何大寫字母,這個條件就會成立,程式就會印出錯誤訊息。

🔁 補充:如果想一次列出所有錯誤

原本的寫法是遇到第一個錯誤就停止判斷。如果想讓程式一次列出所有不符合的規則,可以改用清單收集錯誤訊息。

password = input("請輸入密碼:") errors = [] if len(password) <= 8: errors.append("密碼長度不足,需要大於 8 個字元") if not password.isalnum(): errors.append("密碼只能包含英文字母與數字,不可含有符號") if not any(c.isupper() for c in password): errors.append("密碼需包含至少一個大寫字母") if not any(c.islower() for c in password): errors.append("密碼需包含至少一個小寫字母") if not any(c.isdigit() for c in password): errors.append("密碼需包含至少一個數字") if errors: for error in errors: print(error) else: print("密碼合法 ✅")

這個版本會把所有錯誤都收集到 errors 清單中,最後一次印出。

初學時可以先使用 if / elif / else 版本理解流程;熟悉後再練習用清單收集多個錯誤訊息。

✅ 小結

這個密碼檢查程式雖然不長,但包含了很多 Python 初學者很常用到的基礎觀念。

  • len():檢查密碼長度。
  • isalnum():判斷字串是否只包含英文與數字。
  • any():判斷一組條件中是否至少有一個成立。
  • isupper():檢查是否有大寫字母。
  • islower():檢查是否有小寫字母。
  • isdigit():檢查是否有數字。
  • not:反轉布林值,用來檢查條件「不成立」的情況。
  • if / elif / else:依序檢查不同規則,並輸出對應結果。
輸入密碼 → 檢查長度 → 檢查是否有符號 → 檢查大寫、小寫、數字 → 全部通過就顯示密碼合法
最後用一句話記住:
密碼驗證的核心,就是把每一條規則轉成條件判斷,再逐一檢查。

留言

這個網誌中的熱門文章

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

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

【新訓入伍】義務役新兵必看!入伍報到必備清單整理|2026年更新