import os
import time
def strong(password, verifier):
symbols = "! # $ % & ( ) * , - . / : ; = ? @ [ ] ^ _ ` { | } ~"
password = str(password)
if len(password) > 8:
if len(password) < 15:
for i in symbols:
if password.find(symbols) is True:
我想看看我是否可以修復這部分,因為我不確定如何使用此功能在密碼中查找特殊字符。
if password.isalnum():
verifier = 1
return 'good password', verifier
elif password.isalpha():
return 'Your password is only letters'
elif password.isnumeric():
return 'Your password is only numbers'
else:
return 'no symbols'
else:
return 'Too big'
else:
return 'Too small'
uj5u.com熱心網友回復:
您可以any()與生成器理解一起使用來檢查這一點:
if any(ch in password for ch in symbols):
我會指出符號串列也包含空格,因此如果您不希望空格有資格作為符號,則可能需要將它們洗掉。
uj5u.com熱心網友回復:
您可以return通過在每次失敗的檢查之后執行 ing 而不是將所有深度嵌套的if/else. 由于在“好密碼”情況下,您將回傳“驗證者”和“好密碼”訊息,因此我認為您可能還想為“壞密碼”情況回傳假值:
def is_strong(password):
symbols = set("!#$%&()* ,-./:;=?@[]^_`{|}~")
if len(password) < 9:
return "Too small", False
if len(password) > 14:
return "Too big", False
if not any(c in symbols for c in password):
return "No symbols", False
if password.isalpha():
return "Your password is only letters", False
if password.isnumeric():
return "your password is only numbers", False
return "Good password", True
一旦函式被簡化,我們可以看到isalphaandisnumeric檢查實際上不會做任何事情,因為我們已經確定密碼包含非字母數字符號!相反,我認為你想做:
def is_strong(password):
symbols = set("!#$%&()* ,-./:;=?@[]^_`{|}~")
if len(password) < 9:
return "Too small", False
if len(password) > 14:
return "Too big", False
if not any(c in symbols for c in password):
return "No symbols", False
if not any(c.isalpha() for c in password):
return "No letters", False
if not any(c.isdigit() for c in password):
return "No numbers", False
return "Good password", True
我們可以這樣測驗函式:
strong, password = False, ""
while not strong:
password = input("Set password: ")
msg, strong = is_strong(password)
print(msg)
Set password: bob
Too small
Set password: bobledeboingerberoo
Too big
Set password: bobbington
No symbols
Set password: bobbington!
No numbers
Set password: bobbington3!
Good password
uj5u.com熱心網友回復:
將您的特殊字串列設為一組,您將能夠使用該isdisjoint功能來檢查密碼中是否沒有符號:
if {*"!#$%&()* ,-./:;=?@[]^_`{|}~"}.isdisjoint(password):
print("Password has no symbols")
else:
print("Password contains at least one symbol")
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/383746.html
