Python /打印并每次分配随机数

时间:2017-03-10 14:50:11

标签: python-2.7 random string-formatting

我正在尝试生成随机积分并将其分配给变量。

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格式,但结果是一样的。

2 个答案:

答案 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)