Создание файла символов максимальной длины со словом, вставленным в случайных местах x количество раз - PullRequest
0 голосов
/ 01 июня 2019

Я могу создать файл случайных данных, но при попытке вставить слово в случайных местах x раз, длина файла становится больше, чем максимальная длина, переданная.

Я попытался создать файл со случайными символами - длина слова * количество раз, которое необходимо вставить, а затем добавить его в случайные места, но это только привело к его добавлению в конец файла.

def gen_file(word:str, frequency:int, maxlength:int):
    contents = ''
    i = 0

    while i < frequency:
        for x in range(0, maxlength):
            ran_num = random.randint(0, maxlength-1)
            if x == ran_num:
                contents = contents + word
                i = i+1
            else:
                contents = contents + random.choice(string.ascii_letters)

    file = open("new.txt","w")
    file.write(file_contents)
    file.close()

Если я вызываю функцию как gen_file ('привет', 3, 5000). Я ожидаю, что выходной файл будет иметь длину 5000 символов с 'привет', вставленным в 3 случайных местах, но я получаю выходной файл, который находится в диапазоне от 10000 до 20000 символов.

1 Ответ

0 голосов
/ 01 июня 2019

Ваша проблема в самом верху вашего потока управления:

while i < frequency:
    for x in range(0, maxlength):

Для каждой из 3 вставок вы генерируете 5000 x символов. Вместо этого вам нужно выбрать три случайных местоположения из набора one из 5000. Я предлагаю вам сделать это, выбрав три случайных местоположения в начале. Сортируйте их по порядку. Затем напишите свой файл, отслеживая положение индекса. Всякий раз, когда вы достигнете следующей позиции в вашем случайном списке, прекратите вставлять «привет».

Это тебя заводит?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...