Какое добавить условие, чтобы код работал?

from itertools import product

counter = 0

for i in product("АЛЕКСЙ", repeat = 6):
    if i.count("Й") <= 1 and i[0] != "Й" and i[-1] != "Й" and i.index("Й") != i.index("А") + 1 and i.index("Й") != i.index("А") - 1:
        counter += 1
print(counter)

Ошибка

Traceback (most recent call last):
  File "D:\PyProjects\main.py", line 6, in <module>
    if i.count("Й") <= 1 and i[0] != "Й" and i[-1] != "Й" and i.index("Й") != i.index("А") + 1 and i.index("Й") != i.index("А") - 1:
ValueError: tuple.index(x): x not in tuple

Я понимаю, что делает эта ошибка, но как прописать так, чтобы оно работало, я не знаю.


Ответы (1 шт):

Автор решения: Алексей Р

Чтобы избежать данной ошибки, можно проверить наличие искомых символов в комбинации на каждой итерации:

counter = 0
for i in product("АЛЕКСЙ", repeat=6):
    if ({'А', 'Й'}.issubset(i) and
        i.count("Й") <= 1 and i[0] != "Й" and i[-1] != "Й" and i.index("Й") != i.index("А") + 1 and i.index("Й") != i.index("А") - 1):
            counter += 1
print(counter)

Либо обработав ошибку с помощью try/except:

counter = 0
for i in product("АЛЕКСЙ", repeat=6):
    try:
        if i.count("Й") <= 1 and i[0] != "Й" and i[-1] != "Й" and i.index("Й") != i.index("А") + 1 and i.index("Й") != i.index("А") - 1:
            counter += 1
    except:
        pass
print(counter)

Результат:

5083
→ Ссылка