如何检查是否重复使用随机模块打印的内容?
问题描述:
这是我到目前为止的代码:如何检查是否重复使用随机模块打印的内容?
import random
words = ['a', 'b', 'c']
def abc():
print(random.choice(words))
input('Press Enter to Continue')
abc()
abc()
我怎样才能使它所以每次打印从列表words
一个字的时候,它会检查是否已经重复之前呢?我希望答案是在没有模块的python或random
模块中。
答
正如@John指出的那样,只需使用random.shuffle
即可。
random.shuffle(x[, random])
洗牌序列x到位。 可选参数random是一个0参数函数,它在[0.0,1.0)中返回一个随机值 float;默认情况下,这是函数random()。
random.shuffle(words)
print(words)
#loop
for word in words:
print(word)
会给:
IN : words = ['a', 'b', 'c']
OUT : ['c', 'a', 'b'] #This is random
注1:优势利用shuffle
的是,有没有得到相同的元素两倍的你的风险。
注意2:请小心,因为使用shuffle会影响您存储数据的原始变量。如果您想保留原始序列,我建议您将数据复制到另一个变量中,并使用shuffle
中的数据。
你为什么要这么做?如果你的目标是按照随机顺序打印一次,使用'random.shuffle()'。如果你真的想要,你可以使用'set'来跟踪你打印的内容。 –
这听起来好像你想* shuffle *'words'来代替,然后只是遍历随机顺序。这样你就不会重复同一个词。 –
我建议你写一个适当的循环,而不是在其内部调用'abc'。 – khelwood