2015-06-18 117 views
1

我正在Python 2.7中導入random。我想要這個代碼生成兩個隨機卡。當前的代碼不會生成隨機卡片。如果我請求卡片(9,11),代碼會生成總數爲19的卡片(9,J)。輸出沒有任何隨機性。random.randint不生成隨機值

def blackjack(A,B): 
    print "Welcome to Blackjack!" 
    print "Your cards are",name[A-1],"&",name[B-1] 
    total = value[A-1] + value[B-1] 
    print "Your card total is",total 

import random 
A = random.randint(1,13) 
B = random.randint(1,13) 


name = ('A','2','3','4','5','6','7','8','9','10','J','Q','K') 
value = (11,2,3,4,5,6,7,8,9,10,10,10,10)  

輸出示例:

>>> blackjack(9,11) 
Welcome to Blackjack! 
Your cards are 9 & J 
Your card total is 19 
+2

嗯,很明顯,如果你總是打電話給你的函數的參數9和11,它總是要使用你需要真正使用這些值9和11。你正在生成的隨機數字。 – user2357112

+0

我嘗試了幾個數字組合: –

+0

blackjack(1,10) 歡迎來到二十一點! 您的卡片是A&10 您的卡片總數是21 >>> blackjack(6,11) 歡迎來到二十一點! 您的卡片是6&J 您的卡片總數是16 >>> blackjack(3,7) 歡迎來到二十一點! 您的卡片是3和7 您的卡片總數是10 –

回答

3

你似乎定義一個函數,並調用它,以及如何工作參數之間相混淆。

def blackjack(A,B): 
    print "Welcome to Blackjack!" 
    print "Your cards are",name[A-1],"&",name[B-1] 
    total = value[A-1] + value[B-1] 
    print "Your card total is",total 

在你的函數AB是佔位符。它們將被你放在括號中的任何東西所取代。由於範圍確定,您的功能不知道任何關於AB定義在其外部的任何內容。

Scoping是Python如何知道使用哪些變量。它在行動中一個簡單的例子可以看這裏:

>>> a = 10 
>>> def bar(): 
    a = 5 
>>> a 
10 

a裏面的功能,不影響外面的一個。你的功能正好相反。 A outrside功能不會影響內部,除非您將其作爲參數傳遞。

試試這個:

blackjack(random.randint(1,13), random.randint(1,13)) 

,看看你會得到什麼。

你可以閱讀一些有關函數的工作here

+0

感謝您的指導。我會做額外的研究。 –