Кто может помочь. Задача у ребенка 10 лет на проверку пароля

Виктория

Новичок
Пользователь
Июн 9, 2020
1
0
1
Кто может помочь. Задача у ребенка 10 лет такая. Написать программу, которая позволит проверять пароль на сложность .Проверку пароля следует проводить по следующим критериям:
1. Длина: от 5 символов.
2. Буквы латинского алфавита в верхнем и нижнем регистре: A, a, Z, z.
3. Цифры от 0 до 9.
4. Символы: @, #,%, &
Рекомендуют использовать методы isnumeric, isupper и т.д
Вот что у него получилось, вроде все работает. Но буквы проходят и русские в пароль, а в условие должны быть латинские. Как можно исправить или что дописать

pa = input('Введите пароль: ')
is_numeric = False
is_upper = False
is_lower = False
is_spec = False
for s in pa:
if s.isnumeric():
is_numeric = True
elif s.islower():
is_lower = True
elif s.isupper():
is_upper = True
elif s in "@#%&":
is_spec = True
if len(pa) >= 5 and is_numeric and is_upper and is_lower and is_spec:
print('Пароль: Oк')
else:
if len(pa) < 5:
print('Пароль должен больше 5 символов')
if is_numeric < 1:
print('Пароль должен содержать цифры')
if is_lower < 1:
print('Пароль должен содержать маленькие буквы')
if is_upper < 1:
print('Пароль должен содержать большие буквы')
if is_spec < 1:
print('Пароль должен содержать символы @, #, %, &')
 

stud_55

Модератор
Команда форума
Модератор
Апр 3, 2020
1 522
672
113
В следующий раз код вставляйте через кнопку ... -> Код -> python.
Чтобы не пропускать русские буквы и другие символы можно ввести ограничение. Вот пример:
Python:
# строка с разрешенными символами
allowed_symbols = 'abcdefghijklmnopqrstuvwxyz0123456789@#%&'
pa = input('Введите пароль: ')
is_numeric = False
is_upper = False
is_lower = False
is_spec = False
is_restricted = False
for s in pa:
    if s.lower() not in allowed_symbols:
        is_restricted = True
    else:
        if s.isnumeric():
            is_numeric = True
        elif s.islower():
            is_lower = True
        elif s.isupper():
            is_upper = True
        elif s in "@#%&":
            is_spec = True
if len(pa) >= 5 and is_numeric and is_upper and is_lower and is_spec and not is_restricted:
    print('Пароль: Oк')
elif is_restricted:
    print('Пароль содержит неразрешенные символы')
else:
    if len(pa) < 5:
        print('Пароль должен больше 5 символов')
    if is_numeric < 1:
        print('Пароль должен содержать цифры')
    if is_lower < 1:
        print('Пароль должен содержать латинские маленькие буквы')
    if is_upper < 1:
        print('Пароль должен содержать латинские большие буквы')
    if is_spec < 1:
        print('Пароль должен содержать символы @, #, %, &')
 
  • Мне нравится
Реакции: Виктория

Форум IT Специалистов