【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("密碼需包含至少一個大寫字母")
拆解理解
1、for c in password
代表「把密碼字串逐字拿出來」
例如密碼是 "Abc123"
那麼我在這一段程式碼裡面所定義的【c】,會依序變成:'A', 'b', 'c', '1', '2', '3'
2、c.isupper()
isupper() 函式會檢查這個字元是不是大寫字母
例如:
'A' True
'b' False
'1' False
3、any(...)
any() 會檢查「裡面有沒有至少一個
True」
所以這段python複製程式碼
any(c.isupper() for c in password)
意思是:「在密碼裡面,只要有任何一個字元是大寫字母,結果就是 True」
4、邏輯運算子not
剛剛那一段的結果「在密碼裡面,只要有任何一個字元是大寫字母,結果就是 True」
而我們的條件是要檢查 「沒有大寫字母」 時才要印錯誤訊息,所以用 not 反轉結果。
簡言之,就是「裡面沒有任何大寫字母,就是false,反之為true」
留言
張貼留言