Python

Можете подсказать, почему код не работает?

Готовлюсь к егэ по информатике. Решение писал по шаблону. Код не хочет выводить результат. Подскажите где я обосрался, пожалуйста)
Текст задачи:
Найдите количество пятизначных восьмеричных чисел, в которых все цифры различны и никакие две четные или нечетные не стоят рядом.

Код:
a="01234567"
c=1
for f1 in a:
for f2 in a:
for f3 in a:
for f4 in a:
for f5 in a:
s=f1+f2+f3+f4+f5
if (s.count("0")==1) and (s.count("1")==1) and (s.count("2")==1) and (s.count("3")==1) and (s.count("4")==1)and (s.count("5")==1) and (s.count("6")==1) and (s.count("7")==1):
if (not "13" in s) and (not "15" in s) and (not "17" in s) and (not "31" in s) and (not "35" in s) and (not "37" in s) and (not"51" in s) and (not"53" in s) and (not"57" in s) and\
(not "71" in s) and (not"73" in s) and (not"75" in s) and (not"11" in s) and (not"33" in s) and (not"55" in s) and (not"77" in s) and (not"00" in s) and (not"22" in s) and\
(not "44" in s) and (not"66" in s) and (not"02" in s) and (not"04" in s) and (not"06" in s) and (not"20" in s) and (not"24" in s) and (not"26" in s) and (not"40" in s) and\
(not "42" in s) and (not"46" in s) and (not"60" in s) and (not"62" in s) and (not"64" in s):
print(c)
c+=1
это ужас, а не решение, ты на егэ тоже будешь 100 лет сидеть прописывать все 100500 условий в 100500 вложенных циклах? А если система будет 16чная, а числа длиной в знаков так 10? А потом также 100 лет дебажить?

Сразу в глаза бросается то, что ты обязываешь свое пятизначное число содержать все цифры от 0 до 7, что, очевидно, невозможно. Что делать? Во всех каунтах заменить "==" на "<=" Дальше - даже читать не буду.

Возвращаясь к задаче, это простая комбинаторика: 5 мест: на первое - 7 кандидатов(все, кроме 0), на второе - 4(все другой четности), на третье - 3(все первой четности, кроме того, что взяли на первую позицию), и так далее.
Итого имеем: 7 * 4 * 3 * 3 * 2 = 504 варианта. Даже прогать ничего не надо...

Если уж очень хочется решить это кодом и втупую, перебором, то делай хотя бы так, что ли:
 def check(s): 
if s.count("8") > 0 or s.count("9") > 0:
return 0
for i in range(8):
if s.count(str(i)) > 1:
return 0
for i in range(1, len(s)):
if int(s[i]) % 2 == int(s[i - 1]) % 2:
return 0
return 1


cnt = 0
for i in range(10000, 100000):
cnt += check(str(i))
print(cnt) # 504
_Владимир_ Семёнов_
12 614
Лучший ответ
Евгений Холманский Спасибо, все сработало. Наверное действительно лучше решать все на бумаге)