2016-07-24 1 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) 

и это будет случайный выход, который отличается каждый раз, когда из-за перетасовать функции (есть также оператор печати, но я не включил его):

('10', 'diamond', '2', 'diamond') 

Теперь это в основном то, что список player_hand есть, но когда я затем приступить поставить в этом проверить:

player_hand 

выводит:

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

Я смущен, потому что не должен» t player_hand возвращает то же значение, что и функция create_hands, предполагая, что я только запускал create_hands (колода) один раз?

ответ

0

Ваш

player_hand 

имеет локальную область видимости, которая генерируется случайным образом, в то время как

create_hands 

имеет глобальный масштаб, и вы к нему доступ извне - к тому же, каждый вызов порождает другой результат, поэтому каждый раз вы будете тестировать любой из них, вы получите другой результат от

random.shuffle(deck) 
+0

Как вы предлагаете мне решить эту проблему? так что player_hand равен тому, что возвращается из create_hands? –

+0

Да, вы заботитесь только о том, что возвращает функция, поскольку то, что будет внутри функции, может отличаться в следующий раз, поэтому просто игнорируйте ее. – dmitryro