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