Как исправить выпадения повторных слов в конечном результате
Количество игроков - это количество прогонов программы. Почему-то в конечном файле rez выпадают повторные слова, хотя не должны.
Почему так происходит и как это исправить?
В файле proff хранятся слова (сепаратор - \n)
import random
n = int(input('Количество игроков: '))
i=0
while n > i:
i = i+1
with open('Proff.txt', 'r', encoding="utf-8") as source:
l = source.readlines()
word2 = ''
word2 = l[random.randint(1, len(l) - 1)]
with open('vibor.txt', 'r', encoding="utf-8") as f:
data = [ line.split() for line in f ]
while word2 in data:
word2 = l[random.randint(1, len(l) - 1)]
f2 = open("vibor.txt", 'a', encoding="utf-8")
f2.write(word2)
f2.close()
my_file = open("rez.txt", 'a', encoding="utf-8")
my_file.write(word2)
my_file.close()
Ответы (2 шт):
Очевидно там хранятся одинаковые слова, т.к. файл rez.txt открыт в режиме a (append).
Сделайте режим w(write).
Ну либо если в rez.txt должны хранится все слова со всех игр (или как это правильнее сказать), то w+ (write + read) и костыль этакий:
my_file = open("rez.txt", 'w+', encoding="utf-8")
my_file.write('\n'.join(list(set(my_file.read().split('\n')))))
my_file.close()
Проверьте, что у вас в data получается. Сдаётся мне, что у вас там получается список списков, а не просто список слов. То есть что-то типа [['слово1'],['слово2'],...], а не ['слово1','слово2',...]
Читайте лучше файл vibor.txt вот так, аналогично другому файлу, который вы читаете ранее, и тогда сравнение должно нормально заработать:
with open('vibor.txt', 'r', encoding="utf-8") as f:
data = f.readlines()