TypeError: 'NoneType' object is not subscriptable в цикле for
На вход программе подается строка из нескольких слов через пробел. Необходимо прочитать эту строку, сформировать список и определить, начинается ли следующее слово на последнюю букву предыдущего (если слово заканчивается на "ь", "ъ", или "ы", то берется предпоследняя буква). Нужно напечатать "ДА", если последовательность удовлетворяет этому правилу, и "НЕТ" в противном случае.
Но мой код в конце выдает ошибку TypeError: 'NoneType' object is not subscriptable в цикле for.
Мой код:
a = input().lower().split()
s = 0
for i in a:
if i == a[-1]:
print("ДА")
break
if (i[-1] == a[s + 1][0]) or ((i[-1] == ('ь' or 'ъ' or 'ы')) and i[-2] == a[s + 1][0]):
s += 1
else:
print("НЕТ")
break
Ответы (1 шт):
Если вы работаете в среде Jupyter, IPython или в чем-то похожем, где считывание строки и выполнение цикла разделены в разных ячейках, то перед выполнением цикла проверьте содержимое объекта a, по которому вы итерируетесь. Вероятно, в процессе экспериментов туда в качестве элемента попал None.
P.S. Замечание о коде, которое к вопросу не относится. Выражение ... or ... or ... всегда равно первой не ложной с точки зрения операции bool(...) части. В вашем случае ('ь' or 'ъ' or 'ы') равно 'ь'. Соответственно выражение i[-1] == ('ь' or 'ъ' or 'ы') будет проверять равенство последней буквы только мягкому знаку. Чтобы исправить ситуацию, его нужно переписать. Например:
i[-1] == 'ь' or i[-1] == 'ъ' or i[-1] == 'ы'