Python: Как отобразить ошибки в "Создание действительного пароля" и указать, является ли первый символ буквой?
Я пытаюсь создать пароль с типичными требованиями, например, он должен иметь как минимум 1 верхний / нижний регистр и т. Д. Если пароль неверен в соответствии с требованиями, мы должны отобразить ошибки, чтобы пользователь попытался его получить. исправить снова.
Я начал с цикла while, так что в итоге у пользователя будет возможность продолжить другой тест или нет. Это общие шаги, которые я сделал.
В конце, если текстовый ввод пользователя будет определен как недопустимый, я должен отобразить его ошибки. Это моя главная проблема сейчас. Код лучше после предложения. Теперь мне просто нужно как-то отобразить ошибки.
Вот как прошел мой код
while True:
pw = input('Enter password to be tested if valid or not: ')
correct_length = False
uc_letter = False
lc_letter = False
digit = False
no_blanks = True
first_letter = False
if len(pw) >= 8:
correct_length = True
for ch in pw:
if ch.isupper():
uc_letter = True
if ch.islower():
lc_letter = True
if pw.isalnum():
digit = True
if pw[:1].isalpha():
first_letter = True
if not pw.find(' '):
no_blanks = True
if correct_length and uc_letter and lc_letter and digit and first_letter and no_blanks:
valid_pw = True
else:
valid_pw = False
#This is the part where I'm suppose to display the errors if the user gets it wrong.
#Initially, in the test for ch. above, I put in an else: with a print statement but because of the for- statement, it prints it out for every single character.
answer = input('Try another password input? y/n ')
if answer == 'y'
answer = True
else:
break
2 ответа
isdigit
только возвращается True
или же False
,
if ch.isdigit():
Если вы хотите проверить, являются ли первые два символа цифрами, сделайте это вне цикла:
if pw[:2].isdigit():
digit = True
for ch in pw:
...
И проверить, есть ли пробелы в строке:
if not pw.find(' '):
no_blanks = True
Или, если вы хотите избежать всех видов пробелов и пробелов, включая символы новой строки:
import string
...
if not any(c in string.whitespace for c in pw):
no_blanks = True
for ch in pw:
...
Для пробела я бы использовал (не забудьте импортировать строку):
import string
for ws in string.whitespace:
if ws in pw:
no_blanks = False
break
Это проверяет все виды пробелов, включая, например, пробел и табуляцию
Для цифр я бы определил dig_count = 0
до вашего цикла.
Внутри цикла:
if ch.isdigit():
dig_count += 1
После цикла:
if dig_count >= 2:
digit = True