パスワードを入力するプログラムを作成する必要があります。パスワードは8文字以上、英字で始まり、大文字と小文字の両方を含み、スペースと少なくとも2桁の数字を含む必要があります。文字列に2桁以上の空白が含まれていないかどうかを確認するにはどうすればよいですか?
私は、スペースや数字があるかどうかを確認するためにforループを使用してみましたが、全体パスワードが空白または数字で構成されている場合、それはのみ動作します、最後の2
を除く他のすべてのダウンを持っています。数字またはスペースがある場合、いくつの数字またはスペースがあるのかだけでなく、パスワードに数文字のエラーメッセージが表示されます。私はこれが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](https://xkcd.com/936/)も必要なもの(例の桁とスペース)に置き換えてください。本当に大文字、数字、空白を必要としないかどうか検討してください。 –