Python随机.选择相同的输出

puruo6ea  于 2023-04-22  发布在  Python
关注(0)|答案(7)|浏览(161)

我想在一个变量中随机输入一些字符串

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

当我运行我的脚本的时候,它们每次都是一样的,

test1
test1
test1

我喜欢在每次调用变量的时候随机设置,

test1
test3
test2
zbdgwd5y

zbdgwd5y1#

这基本上与

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)
gpnt7bae

gpnt7bae2#

试试这个...

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

o8x7eapl3#

每次都要调用命令:

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

goqiplq24#

请访问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)
zhte4eai

zhte4eai5#

如果你想把结果存储在某个地方,而不仅仅是打印,你应该使用列表解析,值将直接存储在一个新的列表中。
翻译:

>>> 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”,然后使用它。
编辑:同样在你的问题得到回答后,请选择帮助你解决问题的答案。谢谢。

rks48beu

rks48beu6#

如果print()不知道如何打印一个对象,它会尝试调用__str__()。你可以使用它来模拟print()中随机变量的行为,方法是 Package random.choice()

import random

class MyTest:
    def __init__(self, choices):
        self.choices = choices
    def __str__(self):
        return str(random.choice(self.choices))

myTest = MyTest(["test1","test2","test3"])

print(myTest)
print(myTest)
print(myTest)

这也适用于在格式化字符串中使用变量,例如print(f'>{myTest}<'),但对于字符串连接等运算符失败:

>>> print(f'>{myTest}<')
>test3<
>>> print(myTest+'!')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: unsupported operand type(s) for +: 'MyTest' and 'str'

你可以通过在MyTest中添加一个返回str(self)+x的函数__add__(self, x)来修复后者,但这不能使用'!'+myTest

abithluo

abithluo7#

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

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

相关问题