我正在尝试创建一个用户在控制台中输入密码的小程序。然后程序根据用户输入的内容检查密码是弱,中等还是强。
我需要检查输入了多少大写,小写和数字,然后告诉用户他们的密码有多强。
我已经完成了大部分程序,但由于我没有真正使用过Python,所以我不太熟悉任何先进的东西,请记住年轻人也必须理解这些代码也不会擅长编码自己。
到目前为止,我有:
#Welcome the user to the application.
print("Hello, please enter a password to check how secure it is");
#Set a variable called MinPass and set a value of 6.
MinPass = 6;
#Set a variable called MaxPass and set a value of 12.
MaxPass = 12;
#Set variable EnteredPass and wait for user input
EnteredPass = input("Password: ");
while len(EnteredPass) < MinPass:
print("Your password is too short, please enter a longer password and try again")
EnteredPass = input("Password: ");
while len(EnteredPass) > MaxPass:
print("Your password is too long, please shorten it and try again!");
EnteredPass = input("Password: ");
请注意,这仅用于教育目的。我不打算制作一个旨在窃取随机密码的程序。这是我学校正在进行的课程的一部分!
答案 0 :(得分:4)
这包含一些更高级的概念,但应该很容易遵循:
import string
def long_enough(pw):
'Password must be at least 6 characters'
return len(pw) >= 6
def short_enough(pw):
'Password cannot be more than 12 characters'
return len(pw) <= 12
def has_lowercase(pw):
'Password must contain a lowercase letter'
return len(set(string.ascii_lowercase).intersection(pw)) > 0
def has_uppercase(pw):
'Password must contain an uppercase letter'
return len(set(string.ascii_uppercase).intersection(pw)) > 0
def has_numeric(pw):
'Password must contain a digit'
return len(set(string.digits).intersection(pw)) > 0
def has_special(pw):
'Password must contain a special character'
return len(set(string.punctuation).intersection(pw)) > 0
def test_password(pw, tests=[long_enough, short_enough, has_lowercase, has_uppercase, has_numeric, has_special]):
for test in tests:
if not test(pw):
print(test.__doc__)
return False
return True
def main():
pw = input('Please enter a test password:')
if test_password(pw):
print('That is a good password!')
if __name__=="__main__":
main()
答案 1 :(得分:0)
您可以使用以下功能: -
isalnum() # To check for alpha numeric characters
isalpha() # To check for the presence of only alphabets
例如。
password = input("Enter the password: ")
if password.isalnum() == False:
print "Password should contain atleast one special character or number"
if password.isalpha() == False:
print "Password should contains atleast some alphabets."
要检查是否存在大写或小写字母,您可以使用: -
temp = passsword.lower()
if temp == password:
print "Password should contain atleast one capital letters"
它是如何工作的? 虽然这段代码是不言自明的,但没有任何关于它的火箭科学,我会解释它,因为你似乎是我的初学者: -
str.isalnum() returns False if the string contains some non alphabet characters
str.isalpha() returns false if the string does not contain a single alphabet
通过创建
temp
我正在存储小写密码的副本。因此,如果密码变量包含一些大写字母,那么
temp == password
将返回False,您可以找出该字符串是否包含大写字母。 正如@MartijnPieters所指出的,你可以使用
if not password.isalnum():
也代替
if password.isalnum() == False:
虽然,第一种方式更“pythonic”
答案 2 :(得分:-2)
编写MATLAB代码以检查输入密码的强度,代码应输出:'weak','medium','strong'和非常强'取决于密码的长度,使用两个资本和小写字母,数字和特殊字符的使用。