我正在尝试生成随机积分并将其分配给变量。
import random
import time
Op = lambda: random.randint(1300, 19000)
op = "https://duckduckgo.com/html?q="
variable = int(Op())
grow = 0
while x < 3:
print(Op())
grow = grow + 1
time.sleep(1)
在这里一切正常,功能“打印”每次打印3次尝试不同的结果。 但是,当我想格式化这样的代码时:
Op = lambda: random.randint(1300, 19000)
op = "https://duckduckgo.com/html?q="
Op1 = int(Op())
pop = str("{}{}").format(op, Op1)
grow = 0
while grow < 3:
print(pop)
grow = grow + 1
time.sleep(1)
然后功能打印给我三次相同的数字。
例如:
>>>https://duckduckgo.com/html?q=44543
>>>https://duckduckgo.com/html?q=44543
>>>https://duckduckgo.com/html?q=44543
我想得到三个随机数。例如:
>>>https://duckduckgo.com/html?q=44325
>>>https://duckduckgo.com/html?q=57323
>>>https://duckduckgo.com/html?q=35691
我试图使用%s - %d格式,但结果是一样的。
答案 0 :(得分:0)
根据定义,Lambda函数是匿名的。如果你需要&#34;记住&#34;一个lambda的过程,只需使用def
语句。但实际上你甚至不需要这个:
import random
import time
url_base = "https://duckduckgo.com/html?q={}"
grow = 0
while grow < 3:
print(url_base.format(random.randint(1300, 19000))
grow = grow + 1
time.sleep(1)
您的主要问题是您正在尝试为变量分配固定值,并希望它们的行为类似于过程。 您需要在每次迭代时应用随机性。而是计算一次随机数并将其插入每个循环。
答案 1 :(得分:0)
因为您永远不会更改&#39; pop&#39;。
的值在第一个示例中,您将在每次迭代中创建Op的实例,但在第二个示例中,您在循环外部创建了一次实例并打印相同的值。
试试这个:
Op = lambda: random.randint(1300, 19000)
op = "https://duckduckgo.com/html?q="
grow = 0
while grow < 3:
pop = str("{}{}").format(op, int(Op()))
print(pop)
grow = grow + 1
time.sleep(1)