[英]How to write a python function to check if a user input for a password is not strong?
[英]creating a strong password [Python]
需要創建一個函數來驗證我的密碼強度是否遇到第三個問題。
3.如果密碼的第一個和最后一個字符是字母,那么無論大小寫如何,密碼的第一個字符必須與密碼的最后一個字符不同。 例如,第一個字符為A,因此最后一個字符不能為A或a。
def validate_password(first_pwd, second_pwd):
#Checks if password are same
if first_pwd == second_pwd:
#Checks if password is greater or equal to 8 characters
if len(first_pwd) >= 8:
#Checks if last and first character are alphabetic
if first_pwd[0].islower() and first_pwd[-1].isupper() or first_pwd[0].isupper() and first_pwd[-1].islower():
return True
else:
return False
print(validate_password("Abcd1234","Abcd1234"))
如何忽略密碼末尾的數字,並查看最接近的字母d。
您可以嘗試使用正則表達式解決它。 這將檢查字母的第一次出現是否等於(不區分大小寫)字母的最后一次出現。
如果您確實只想檢查字符串的第一個字符或最后一個字符,則必須改編正則表達式或if子句。
您還可以進行額外的檢查,以查看pwd中的最后一個字符是否等於下面列表中的chars的最后一個字母。
import re
def validate_password(first_pwd, second_pwd):
# Checks if password are same
if first_pwd == second_pwd:
# Checks if password is greater or equal to 8 characters
if len(first_pwd) >= 8:
# get only the letters of the password
chars = re.findall(r'[A-Za-z]', first_pwd)
# compare first and last occurrence of letters in pwd
if chars[0].islower() and chars[-1].isupper() or chars[0].isupper() and chars[-1].islower():
return True
else:
return False
print(validate_password("Abcd1234","Abcd1234"))
我也認為,僅檢查一下就足夠了
if chars[0].upper() == chars[-1].upper(): # optional if needed: and first_pwd[-1].upper() == chars[-1].upper()
我不是專家,但是作為一個嘗試不斷改進python的人,建議您寫出單詞而不是使用縮寫。
此外,您還可以使用其他功能來驗證是否僅在密碼與先前的密碼相同的情況下才檢查密碼的強度,因此請確保在第一次檢查時所用的長度大於8
值得一看的事情是:
islower,isalpha 這里
與lower()在這里
我建議您使用正則表達式,因為這是一個很難的概念imo
import re
def validate_password(first_password, second_password):
if first_password == second_password:
# Cannot be the previous password
return False
letters = "".join(re.findall("[a-zA-Z]+", first_password))
first_letter = letters[0]
last_letter = letters[-1]
if len(first_password) >= 8:
if first_letter.lower() == last_letter.lower():
# First character can't be the same as last character
return False
else:
# Every test passed
return True
else:
# password too short
return False
print(validate_password("Abcd1234","Abcd1234"))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.