Хотите напечатать случайные строки, не повторяя ни одного раза - PullRequest
0 голосов
/ 03 августа 2020

Хорошо, поэтому я хочу напечатать случайные строки, но я также хочу, чтобы они не дублировались ни разу. У меня есть этот код:

import random
howmanytimes=int(input("howmanytimes?:"))

people=int(input("how many people do you want to comment ?:"))

f1=open("comentarios.txt","r")
mentions=random.sample(f1.readlines(),people)
for i in range(howmanytimes):
    print(mentions)

В документе у меня есть список имен одно за другим, однако окончательный результат таков:

howmanytimes?:3
how many people do you want to comment ?:2
['@brother\n', '@hehe\n']
['@brother\n', '@hehe\n']
['@brother\n', '@hehe\n'] 

, поэтому в этом случае он печатает случайным образом, но повторяется в следующих 3 строках, кто-нибудь может помочь дать случайные имена в каждой строке?

Ответы [ 2 ]

0 голосов
/ 03 августа 2020

Вы должны поместить random.sample() в l oop.

содержимое test.txt:

this
is
my
test
file
for
so

Код:

import random

howmanytimes = int(input("How many times?:"))
people = int(input("How many people do you want to comment?:"))

samples = open("test.txt", "r").readlines()
for i in range(howmanytimes):
    mentions = random.sample(samples, people)
    print(mentions)

Вывод:

>>> python3 test.py 
How many times?:3
How many people do you want to comment?:2
['this\n', 'is\n']
['this\n', 'file\n']
['test\n', 'so']

Примечание:

Вы можете удалить завершающие символы новой строки (\n) из строк со следующей строкой:

samples = list(map(str.strip, open("test.txt", "r").readlines()))

В этом случае вывод будет:

>>> python3 test.py 
How many times?:3
How many people do you want to comment?:2
['test', 'my']
['so', 'test']
['this', 'test']
0 голосов
/ 03 августа 2020

Вы можете использовать трюк, чтобы сначала создать сэмпл необходимой длины, а затем разрезать сэмпл:

mentions = random.sample(f1.readlines(), people*howmanytimes)

for i in range(0, len(mentions), people):
    print(mentions[i: i+people])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...