【发布时间】:2016-04-23 23:00:10
【问题描述】:
我必须构建一个程序,您可以在其中输入密码。密码必须至少包含 8 个字符,以字母开头,有大小写字母,不能有空格,并且至少有 2 位数字。
除了最后 2 条以外,我什么都没有了。
我尝试使用 for 循环查看是否有空格或数字,但它仅在整个密码由空格或数字组成时才有效。如果有数字或空格,如果打印出密码中包含多少个字符的错误消息,而不仅仅是有多少个数字或空格。我知道这是因为 for 循环而发生的,但我一直不知道如何解决它。
这是我目前所拥有的:
again = 'y'
while again == 'y':
minimum_characters = 8
error = 0
print('Password must contain 8 characters, start with a letter,')
print(' have no blanks, at least one uppercase and lowercase letter,')
print(' and must contain at least 2 digits.')
password = input('Enter a password: ')
passlength = len(password)
#validity checks for errors
if passlength < minimum_characters:
error += 1
print (error, '- Not a valid password. Must contain AT LEAST 8 characters. PW entered has', passlength, '.')
if not password[0].isalpha():
error += 1
print(error, '- The password must begin with a letter.')
if password.isalpha():
error += 1
print(error, '- The password must contain at least 2 digits.')
if password.isupper():
error += 1
print(error, '- You need at least one lower case letter.')
if password.islower():
error += 1
print(error,'- You need at least one upper case letter.')
again = input('Test another password? (Y or N): ')
again = again.lower()
【问题讨论】:
-
另外,在谈到好的密码时,必须使用XKCD。请考虑是否真的需要大写字母、数字和空格。
标签: python python-3.x