Python random.choice相同的输出

时间:2018-10-19 07:55:33

标签: python python-3.x random

我正在尝试将一些字符串随机分配到变量中,

myTest = random.choice(["test1","test2","test3"])
print(myTest)
print(myTets)
print(myTest)

当我运行脚本时,它们每次都是相同的,

test1
test1
test1

我喜欢在每次调用它时对变量进行随机化,例如,

test1
test3
test2

6 个答案:

答案 0 :(得分:3)

这基本上与

相同
x = 42
print(x)
print(x)
print(x)

仅在分配变量值时才会更改:

x = 42
print(x)
x = 45
print(x)

如果要使用新的随机值,则需要再次调用该函数:

l = [1, 2, 3, 4, 5]
x = random.choice(l)
print(x)
x = random.choice(l)
print(x)

答案 1 :(得分:1)

您每次必须调用命令:

start_link

答案 2 :(得分:1)

尝试一下...

print(random.choice("test1","test2","test3"))
print(random.choice("test1","test2","test3"))
print(random.choice("test1","test2","test3"))

答案 3 :(得分:0)

请访问random.sample docs。在您的情况下,可能如下所示:

import random
my_tests = ['test1','test2','test3']
for choice in random.sample(my_tests, 3):
    print(choice)

其他选择是通过更改my_tests到位执行该操作:

import random
my_tests = ['test1','test2','test3']
print(my_tests, '\n\n')
for i in range(10):
    random.shuffle(my_tests)
    print(my_tests)

答案 4 :(得分:0)

首先,您必须导入随机变量。然后,您应该将test1,test2和test3放在一个字符串中。这样您就可以得到想要的结果:

NULL

答案 5 :(得分:0)

如果要将结果存储在某个地方而不是仅用于打印,则应仅使用list comprehension,这些值将直接存储在新列表中。

翻译:

>>> import random
>>>
>>> choices = ["test1","test2","test3"]
>>> selected = [random.choice(choices) for _ in range(3)] # iterates 3 times, appending value of "random.choice(choices)" to the end of the list
>>> print(selected)
['test1', 'test2', 'test2']

顺便说一句,“ _”只是用于存储不需要的值的“我不在乎”变量,如果需要数字,则可以使用适当的变量命名,例如“ i”并使用它。

编辑:同样,在您的问题得到回答后,请选择有助于您解决问题的答案。谢谢。