基本上我有这个:
import random
variable1 = random.randint(13, 19)
基本上它的作用是给变量1赋一个13到19之间的随机数。很棒。
但是,我想要它做的是每次调用时为该变量分配一个介于13和19之间的不同随机数。无论如何我能做到吗?
如果我不够清楚,这是一个例子:
import random
variable1 = random.randint(13, 19)
print(variable1)
print(variable1)
print(variable1)
我想要的输出看起来像这样:
./script.py
15
19
13
所以是的,无论如何我可以在python中做到这一点? (更具体地说是python3。但答案可能类似于python2的答案)
答案 0 :(得分:4)
也许是一个愚蠢的问题,但为什么不只是使用函数而不是变量?
或许更多内联你的变量范例,为什么不在对象上使用方法。然后可以将对象作为变量传递,并且该方法返回新的随机数。
答案 1 :(得分:4)
这接近你想要的
>>> import random
>>> variable1 = lambda: random.randint(13, 19)
>>> print(variable1())
18
>>> print(variable1())
15
>>> print(variable1())
17
>>>
答案 2 :(得分:3)
在那个具体的例子中,有一种相当愚蠢的方式。 print
隐式将其参数转换为字符串。您可以重载该功能:
class randomizer():
def __str__(self):
return str(random.randint(13, 19))
variable1 = randomizer()
print(variable1)
print(variable1)
print(variable1)
答案 3 :(得分:2)
你提到“被叫”这个词,我认为你已经回答了自己的问题。这正是函数或方法的作用。
变量只是对象的引用。您可以在变量中存储一个对象,该对象会覆盖to string方法以生成随机数,但这仍然是一种方法。
最终你要求的是混淆真正发生的事情,因此会产生更少的可维护代码,imho。
执行variable1 = random.randint(13, 19)
时,variable1
包含不可变对象“数字13”(或其他一些数字)。根据定义,如果不成为另一个对象,它就无法改变相反,你可以用上面提到的可变对象填充你的变量,允许它修改它的“随机数”。或者你可以直接调用一个函数。
这只是一个简单的问题。
答案 4 :(得分:1)
使用:
alist = range(13,20)
random.shuffle(alist)
现在你可以按随机顺序遍历这个
答案 5 :(得分:0)
为什么不完全跳过变量?您也可以使用内联函数:print(random.randint(13, 19) + 1)
。
试试这个,看看它是否符合你的需要;)
print(random.randint(13, 19))
print(random.randint(13, 19))
print(random.randint(13, 19))
print(random.randint(13, 19))
print(random.randint(13, 19))
我看不到任何其他可能性,祝你好运!
答案 6 :(得分:0)
也许我没有正确理解这个问题,但你不能这样做:
print(random.randint(13, 19))
答案 7 :(得分:0)
如何使用random.sample
执行任务?它Chooses k unique random elements from a population sequence
。
import random
v1,v2,v3 = random.sample(range(13,20),3)
print v1,v2,v3
当然,我已经为3个变量赋予了它,你可以将它用于n个变量。