Python3 Itertools Ошибка

import itertools
import time

symbols = ['D','E','F','G','2','4','_']
password = 'DGEF_42F4'
lenght = 9

startTime = time.time()
counter = 0
for i in itertools.combinations_with_replacement(symbols, lenght):
    activeCombination = ''.join(i)
    counter += 1
    if password == activeCombination:
        print(f' Time elapsed - {time.time() - startTime}\n Number of combinations - {counter}\n Password - {activeCombination} ')

Этот код должен подбирать пароль, который указан в поле password. Но при запуске ничего не выводится и все завершается, без ошибок. Ничего не выводится(абсолютно). Ошибок нет, но и результата нет. Тестировал этот код на Termux, ибо не имел доступ к ПК. Подскажите, что не так?


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

Автор решения: S. Nick

Я не знаю алгоритма combinations_with_replacement, но если вы на вход подадите больше символов, то у вас все получится:

import itertools


symbols = 'DEFG24_' * 5                               # <<<=======
lenght = 9
password = 'DGEF_42F4'

for i in itertools.combinations_with_replacement(symbols, lenght):
    activeCombination = ''.join(i)
    if password == activeCombination:
        print(f'Password - {activeCombination}')
        break
→ Ссылка
Автор решения: Danis

используйте itertools.product

for i in itertools.product(symbols, repeat=lenght):
    activeCombination = ''.join(i)
    counter += 1
    if password == activeCombination:
        print(f' Time elapsed - {time.time() - startTime}\n Number of combinations - {counter}\n Password - {activeCombination} ')
→ Ссылка