@ganstar565

Не понимаю почему не работает код python, не могли бы пожалуйста объяснить!?

простой код проверяющий сложность пароля
при введении пароля выводит ошибку 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()
  • Вопрос задан
  • 155 просмотров
Решения вопроса 1
Vindicar
@Vindicar
RTFM!
при введении пароля выводит ошибку string index out of range и я понимаю что это означает что
в [] в листе не существующий индекс

Нет, не понимаешь. Тебе же прямо сказано про строку, а не про список.
Ты сначала делаешь i = plst[ii], а потом с какого-то перепугу делаешь i[ii].isupper() and not i[ii].isnumeric().
У тебя i - это уже один символ, так как plst содержит строку, разбитую по символам.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Rimush
@Rimush
Пока я это смотрел, у меня кровь из глаз пошла. Всю клавиатуру залил. Где такому учат?

зачем вот это?
i = plst[ii]
Сделайте
i = plst
И будет щастье, шутка.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы