我必须建立一个你输入密码的程序。密码必须至少包含8个字符,以字母开头,包含大小写字母,无空格和至少两位数字。如何检查一个字符串是否至少包含2位数字并且没有空格?
我拥有一切下来除了最后2
我使用for循环,看看是否有空格或数字尝试过,但如果整个密码由空格或数字只会工作。如果有一个数字或一个空格,如果在错误消息中打印出密码中包含的字符数量,而不仅仅是多少个数字或空格。我知道这是因为for循环发生的,但我坚持如何解决它。
这是我到目前为止有:
if sum(map(str.isdigit, password)) < 2:
而且,你的检查:
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](https://xkcd.com/936/)在讲好密码时。请考虑你是否真的需要大写字母,数字和空格。 –