如何在 python 中打印一段文本时不重复 random.choice

How to NOT repeat a random.choice when printing a piece of text in python

我在文本文件中有三个列表,我试图随机生成一个四字消息,从 prefixsuprafix 列表中选择前三个字和“后缀”第四个字的文件。

但是,我想阻止它选择 random.choice 函数已经选择的单词。

import random

a= random.random
prefix = open('prefix.txt','r').readlines()
suprafix = open('suprafix.txt','r').readlines()
suffix = open('suffix.txt','r').readlines()
print (random.choice(prefix + suprafix), random.choice(prefix + suprafix), random.choice(prefix + suprafix), random.choice(suffix))

如您所见,它从这两个列表中随机选择三个词。

random.sample(pop, k)pop 中选择了 k 项,没有替换。因此:

prefix1, prefix2, prefix3 = random.sample(prefix, 3)
suprafix1, suprafix2, suprafix3 = random.sample(suprafix, 3)
suffix = random.choice(suffix)
print (prefix1 + suprafix1, prefix2 + suprafix2, prefix3 + suprafix3, suffix))

谢谢 xnx 帮助我解决了问题,首先使用 random.sample 然后打印它们中的任何一个,我可能已经完成了很长一段时间,但我就是这样做的 >

import random

a=random.random

prefix = open('prefix.txt','r').readlines()

suprafix = open('suprafix.txt','r').readlines()

suffix = open('suffix.txt','r').readlines()

prefix1, prefix2, prefix3 = random.sample(prefix, 3)

suprafix1, suprafix2, suprafix3 = random.sample(suprafix, 3)

后缀 = random.choice(后缀)

one = prefix1, suprafix1

二 = 前缀 2,超固定 2

三 = prefix3, suprafix3

打印(random.choice(一),random.choice(二),random.choice(三),后缀)