How do I set a constantly reassigning random variable that works throughout the program?
我想创建一个名为random的变量,每次调用它时,它都在不断变化。
我想要这段代码:
1 2 3 4
| Random = randint(0, 10)
print Random
print Random
print Random |
不要给我这样的东西:
但更像是:
不用在每次使用之前重新分配随机文件。另外,我在几个不同的函数中使用了随机函数。那么,如何允许它在代码中的任何地方都使用,而不必每次都将其重新指定为随机变量呢?
抱歉,如果这是个愚蠢的问题,但我是个新手,我不知道我在做什么。请保持解释的简单。
编辑:这里还有一些代码:
定义一些东西1(随机的,无用的,随便什么)
等。。。
定义一些东西2(随机的,无用的,随便什么)
等。。。
…
主体:()
对于范围(800)中的索引:
1 2 3
| Random = randint(1, 10)
something1(Random, useless, whatever) |
随机=随机(1,10)
一些东西2(随机的,无用的,随便什么)
这会持续一段时间。
- 这是你不能重新分配随机的原因吗?
- 因为我发布的是一个简单的例子。我在程序中多次使用这个变量,我不想把它看作150行程序中每5行代码的一部分。
- 为什么不直接打电话给def foo(): return randint(0,10),然后打电话给foo()?
如果你说的确实是你想要的(即每次使用时都会给出随机值的变量),那么你并不真正想要一个变量。只需将EDOCX1的每个实例(0)替换为randint(0, 10)。或者,您可以自己创建功能:
1 2
| def rand10():
return randint(0, 10) |
然后每次使用Random变量时,只需调用rand10()。
- 我使用的函数需要取一个随机变量作为参数。出于某种原因,如果我尝试在参数中调用rand10函数,它将变为:unboundlocalerror:分配前引用的局部变量"random"
- UserDefinedFunction是我创建的接受3个参数的函数。我需要这个函数来循环,所以我将它设置在for循环中:对于范围(800)中的索引:userdefinedFunction(random,x,y)
- 我们的想法是,与其使用userDefinedFunction(Random, x, y),不如使用userDefinedFunction(rand10(), x, y)。
- 那时候我可能得这么做。
在一个想法很糟糕的地方,你可以做你想做的,但是…既然我们在这里提出了一个非常糟糕的想法,我实际上不会写出代码,但我会告诉你怎么做,如果你想的话,你可以找到它……
创建一个新模块,我们称之为Util。
在Util中编写一个类,我们称之为Crazy类。
在类Util.Crazy中,创建一个名为Random的属性,该属性的getter返回一个随机值(使用禁止的任何界限)。
在模块级创建一个名为C的Util.Crazy实例
现在,您可以在任何需要新值的时候将其拼写为C.Random。
我没有多考虑过,但是我没有看到任何明显的方法来摆脱C.Random,仅仅称之为Random(如果你把Random分配给Crazy().Random,它只会坚持这个值,而不是绑定)。我敢肯定,对于globals(),您可以做一些真正可怕的事情,或者您可以使用原始描述符协议来做您想做的事情。
- 不知道你刚才说了什么。就像我说的,我是个初学者。
- @费利斯维普斯:你应该听别人说你根本不应该做你想做的事。编写函数并调用它是这里的正确解决方案。
- 我不知道这是正确的做法或什么。程序看起来很糟糕,我必须每5行重新分配变量。
- @Felisvulpes:hrm,也许你应该给我们看更多的代码——很难弄清楚你在说什么。上面给出的示例可以简单地通过在每一行中添加括号(例如调用函数)来解决——print Random()。
- 我在为班级做这件事,如果我的老师谷歌搜索我的代码,我就不能让她找到我的代码。这里有一些东西:定义一些东西(随机的,无用的,无论什么)等等…定义一些东西2(随机的,无用的,无论什么)等……main():对于范围(800)中的索引:random=randint(1,10)something1(random,unused,whatever)random=randing(1,10)something2(random,unused,whatever),这会持续一段时间。
Random只是一个整数类型,它包含由randint()生成的值。因为它是一个整数类型,所以它不能在每次调用时更改其值而不重新分配。
您可以做的是定义一个类,这样当它被告知要打印时,它会返回一个不同的值:
1 2 3 4 5 6 7 8 9 10
| from random import randint
class Random:
def __str__(self):
return str(randint(1,10))
random = Random()
print(random) # prints a value
print(random) # could print a different value
print(random) # could print a different value |
- 好的,我可以试试。不过,还没上过课。
- 但是,如何允许所有函数使用随机函数,而不必在每次使用函数时重新分配它呢?
- @Felisvulpes:也许更好的问题是,为什么不将它与函数的每次使用一起分配如此重要?(如果我知道你在问什么)
- 在本例中,您实际上没有重新分配任何内容。您所要做的就是生成一个值,并在随机对象上调用print时将其打印出来。您希望随机对象存储randint()的值,然后只在特定时间更改它吗?
- 是的,但这太复杂了。我只想用昆克洛说的话。将随机化因子(1,10)放入参数中。