простой код проверяющий сложность пароля
при введении пароля выводит ошибку string index out of range и я понимаю что это означает что
в [] в листе не существующий индекс, но мне показалось странным что код ломается после второго повторения while
т.е. я добавил print(ii) и на выходе:
0
1
line 29 in password
if i[ii].islower() and not i[ii].isnumeric():
IndexError: string index out of range
Объясните пожалуйста почему так происходит и как это исправить. Заранее спасибо
def password():
cwh = 0
ii = 0
c = False
b = False
d = False
print('Пароль должен содержать более 12 символов, иметь хотябы одну цифру, букву в нижнем и вверхнем регистре')
passw = input('Введите пароль: ')
plst = list(passw)
lenpass = len(plst)
if lenpass > 12:
a = True
aa = ''
else:
a = False
aa = 'В пароле менее 13 символов.'
while cwh != lenpass:
i = plst[ii]
print(ii)
if i.isnumeric():
b = True
bb = ''
else:
bb = 'Oтсутствуют числа.'
if i[ii].islower() and not i[ii].isnumeric() :
c = True
cc = ''
else:
cc = 'Отсутствуют буквы в нижнем регистре.'
if i[ii].isupper() and not i[ii].isnumeric():
d = True
dd = ''
else:
dd = 'Отсутствуют буквы в вверхнем регистре.'
cwh +=1
ii += 1
if a and b and c and d:
print('Пароль успешно сохранён.')
else:
print(f"Пароль слишком простой. Возможно:\n {aa} {bb} {cc} {dd}")
password()
exit()