Какое добавить условие, чтобы код работал?
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