Как мне исправить код ,чтобы v увеличивалась только после того как каждый элемент из списка пройдет цикл(for f...) а не после каждой проверки элемента

я хочу найти кол-во систем счисления от 2 до 10, при которых число 1988 не будет иметь одинаковых цифр стоящих рядом, в этом коде v это как раз кол-во систем счисления которые подходят под условие

n = 0
v = 0
for i in range(2,11):
    a = 1988
    c = 0
    d = []
    while a > 0:
        c += a%i 
        a = a // 2 
        d.append(int(c))
        n+=1
    for f in range(len(d)):
        if d[f-1]==d[f]:
            break
v+=1
print(v)

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

Автор решения: MaxU
def check(num, base=10):
    num, prev_digit = divmod(num, base)
    while num > 0:
        num, mod = divmod(num, base)
        if mod == prev_digit:
            return False
        prev_digit = mod
    return True

res = sum(check(1988, i) for i in range(2, 10))

результат:

In [109]: res
Out[109]: 3

PS здесь можно найти реализации функций для перевода чисел из одной системы счисления в другую.

→ Ссылка