Избавиться от дубликатов

Всем привет, я создал небольшую программу, которой задаёшь слово, а программа методом тыка угадывает её- единственная подсказка у программы-количество букв Так вот, я хочу, чтобы не допускались повторения наборов букв в каждой строчке вот мой код:

import random
a = 1
Ivan = input('''Введи желаемое слово:
''')
while True:
 symbols = 'ЙЦУКЕНГШЩЗХЪФЫВАПРОЛДЖЭЯЧСМИТЬБЮЁ'
 word = ''.join([random.choice(symbols) for x in range(len(Ivan.upper()))])
 if (word != Ivan.upper()):
  print(str(a) + '.' + word)
  a += 1
  continue
 else:
  print(str(a) + '.' + word)
  break
input()

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

Автор решения: Johan

Попробуйте вот так:

import itertools


def chars_gen(len_ivan, ivan):
    symbols = 'ЙЦУКЕНГШЩЗХЪФЫВАПРОЛДЖЭЯЧСМИТЬБЮЁ'
    for i in range(1, len_ivan):
        for j in itertools.product(symbols, repeat=i):
            temp = ''.join(j)
            if temp == ivan.upper():
                print(f'Вы загадали слово: {temp}')
                return


def main():
    ivan = input('Введи желаемое слово: ')
    chars_gen(len(ivan)+1, ivan)


if __name__ == "__main__":
    main()

Если вы хотите использовать именно рандом, то можно так попробовать:

import random

a = 1
Ivan = input('''Введи желаемое слово: ''')
while True:
    temp = set()
    symbols = 'ЙЦУКЕНГШЩЗХЪФЫВАПРОЛДЖЭЯЧСМИТЬБЮЁ'
    word = ''.join([random.choice(symbols) for x in range(len(Ivan.upper()))])
    if word in temp:
        continue
    elif word != Ivan.upper():
        print(str(a) + '.' + word)
        temp.add(word)
        a += 1
        continue
    else:
        print(str(a) + '.' + word)
        break
→ Ссылка