2017-03-10 9 views
0

ランダム積分を生成して変数に代入しようとしています。Pythonで毎回乱数を出力して割り当てます

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 

そして、私は3個の乱数を取得したいと思います。例:

>>>https://duckduckgo.com/html?q=44325 
    >>>https://duckduckgo.com/html?q=57323 
    >>>https://duckduckgo.com/html?q=35691 

%s - %dの書式設定を使用しようとしましたが、結果は同じです。

+2

あなたは同じ文字列を3回印刷している...なぜそれが同じように見え_shouldn't_? – glibdud

答えて

0

ラムダ関数は匿名で定義されています。ラムダの手順を "覚えて"おく必要がある場合は、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) 

あなたの主な問題は、変数に固定値を割り当てようとしており、プロシージャのように動作することを期待していることです。 繰り返しごとにランダム性を適用する必要があります。代わりに、乱数を一度計算し、それをすべてのループに差し込みます。

0

「ポップ」の値を決して変更しないためです。

最初の例では、すべての反復でOpのインスタンスを作成していますが、2番目の例では、ループの外に1回インスタンスを作成して同じ値を出力しています。

これを試してみてください:

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) 
関連する問題