2016-07-24 169 views
0

只是抬头:我是相当新的Python 无论如何,这是我如何设置我的甲板:问题创造了2张牌出52张牌酒杯的〜为Python

#THIS IS THE DECK ITSELF 
signs = ["spade","hearts","club","diamond"] 
num=['A','2','3','4','5','6','7','8','9','10','J','Q','K'] 
deck = [(j,i) for j in num for i in signs] 

#Step 1. creates 2 random 2-card hands (you and dealer) 
#and shows you your hand and only one card of dealer's hand 
import random 
def create_hands(deck): 
    random.shuffle(deck) 
    print ("You got:") 
    print (deck[0][0], "of", deck[0][1]) 
    print (deck[1][0], "of", deck[1][1]) 
    print ("Dealer has:") 
    print (deck[2][0], "of", deck[2][1]) 
    print ("unknown") 
    player_hand = (deck[0]+deck[1]) 
    return player_hand 

之后,我就进入:

create_hands(deck) 

,这将是随机输出由于随机播放功能(也有一个print语句,但我并没有包括它)每一次不同的是:

('10', 'diamond', '2', 'diamond') 
012现在

,这是基本的列表player_hand是什么,但是当我再继续把这个检查:

player_hand 

它输出:

('4', 'club', 'J', 'spade') 

我很困惑,因为不应该” t player_hand返回与create_hands函数相同的值,假设我只运行一次create_hands(deck)?

回答

0

player_hand 

具有一个随机生成的局部范围内,而

create_hands 

具有全局范围,你在外部访问它 - 而且,每次调用产生不同的结果,所以你每次测试其中一个你会得到不同的结果从

random.shuffle(deck) 
+0

你如何建议我解决这个问题这样player_hand就等于从create_hands返回的内容? –

+0

是的,您只关心函数返回的内容,因为函数内部可能会在下次有所不同,所以忽略它。 – dmitryro

相关问题