我刚刚注意到,当我运行以下代码时:
import random
import time
delay = random.randint(1,5)
for x in range(1, 101):
print(x)
time.sleep(delay)
delay
变量将始终相同,因为它是在开始时确定的。有没有办法为每个循环中的delay
变量生成一个介于1和5之间的新随机数?现在,很明显我可以做这样的事情:
import random
import time
for x in range(1, 101):
print(x)
time.sleep(random.randint(1,5))
但我想使用变量,因为我有一个庞大的代码,如果我更改了一些内容,我不想遍历所有代码。非常感谢!
您最好的选择是定义自己的函数来执行睡眠。这样,您就可以随时更改它,而不必触摸代码的其余部分。例如:
def my_sleep():
time.sleep(random.randint(1,5))
然后您可以将对time.sleep(delay)
的调用替换为:
my_sleep()
您需要将它们全部替换一次,但之后您可以更改my_sleep
,而无需再次更改它们。
混合使用您的方法和@TomKarzes:
small_delay = 5
big_delay = 10
huge_delay = 30
def my_sleep(delay):
time.sleep(random.randint(1, delay))
在适当的时候,您可以使用
my_sleep(small_delay) # 1-5 seconds
或
my_sleep(big_delay) # 1-10 seconds
在您的代码中。如果要更改整个延迟范围,请修改顶部的变量。
不确定你试图实现什么,但你唯一能做的就是让delay
成为一个函数:
import random
def delay():
return random.randint(1,5)
for x in range(1, 101):
print(x)
time.sleep(delay())
如果这是您当前的场景,所有场景都引用了相同的delay
:
...omitted...
delay = random.randint(1,5)
#first for loop
for x in range(1, 101):
print(x)
time.sleep(delay)
#another for loop
for x in range(1, 101):
print(x)
time.sleep(delay)
...so on...
for x in range(1, 101):
...omitted...
恐怕你做这件事不需要做大量的工作。
这样,每次迭代循环时,循环都将被迫使用一个新的随机种子,这导致每次迭代延迟时间不同的概率更高。希望我理解你的问题。
import random
import time
for x in range(1, 101):
random.seed(x)
delay = random.randint(1,5)
print(x)
time.sleep(delay)
import random
import time
for x in range(1, 101):
delay = random.randint(1,5)
print(x)
time.sleep(delay)