2016-12-10 22 views
-1

當我運行此代碼時,print(x)將每次打印相同的字母,但是當我運行它時像第二個例子print(random.choice(b))它按預期工作。有什麼不同?我檢查了一個找到了「種子」參考的答案,但在此之前我沒有使用random.seed()random.choice顯示相同的答案,如果您使用變量

import random 
b = "Hello World" 
x = random.choice(b) 
print(x) 
print(x) 
print(x) 
# same answer as many times as you want to print 
print(random.choice(b)) 
print(random.choice(b)) 
print(random.choice(b)) 
# random choice each time 
+1

什麼是打印'x'的3倍? –

+1

在Python中,'x'爲它賦值*賦值。它不會與它從中獲得價值的線路保持「實時」連接。 – usr2564301

+0

只是爲了表明前三個答案和後三個答案不同,它可以是每個答案的任意數字。 – Neal

回答

0

random.choice(b)當您在返回值賦給x被調用一次,它不會再次每次引用該變量時調用。每次您打印x時,您都會看到該初始分配的結果。當你做print(random.choice(b))它每次都在b上呼叫random.choice()。如果每次引用變量時分配給變量的值都會發生變化,那麼確實會出現問題。

之間有什麼,你在這裏做的真的沒有太大的區別:

x = random.choice(b) 
print(x) 

和你在這裏做:

print(random.choice(b)) 

不同的是,你做後者的3倍(即,你打電話給random.choice() 3x並打印結果3x),所以你會看到3個不同的結果。如果你這樣做:

x = random.choice(b) 
print(x) 
x = random.choice(b) 
print(x) 
x = random.choice(b) 
print(x) 

你會看到不同的結果每次(或至少每次隨機結果 - 它可能是相同的)。

0

通過印刷所分配的值的3倍除非ü調用隨機函數來生成再次新的隨機變量:)不會改變變量的值

0

所不同的是第一個,x = random.choice(b)x到隨機,然後打印x,這是從b隨機選擇的字母。它只是隨機選擇x當你聲明x。第二個,print(random.choice(b))每次都會產生一個新的隨機數。

您可以使用下面的代碼來使X等於random.choice:

b = "Hello world!" 
x = random.choice 
print(x(b)) 

這做同樣的事情print(random.choice(b))