2015-10-20 2 views
-2

Я делаю Блэкджек для обучения в колледже, и мне нужно добавить 2 случайных карты из колоды в список игроков (его рука).Внесение элементов списка в другой список в случайном порядке

это мой код.

import random 
import time 

Ace=1 
Jack=10 
Queen=10 
King=10 

deck=[2,3,4,5,6,7,8,9,10,"Ace","Jack","Queen","King"] 
player=[] 
dealer=[] 



def welcome(): 
    start=input("Hi there - Fancy a game of Blackjack? yes or no ") 
    if start == "yes": 
     print ("The game will begin now...") 
     time.sleep(2) 
     startgame() 

def startgame(): 
    print ("Dealing...") 
    time.sleep(1) 
    for i in range (2): 
     player = random.randint(1,13) 
     print (player) 





welcome() 
startgame() 

спасибо

Shaun

+1

Добавьте код в вопрос. – hjpotter92

ответ

1

Что вы будете делать в реальной игре карт? Вы не выбираете случайные числа и видите, какая карта соответствует этому номеру, и уже ли она взята. Вы только shuffle колода, а затем pop карты из колоды в руки игроков.

>>> cards = list(range(52)) # your actual cards  
>>> random.shuffle(cards) 
>>> hand = [cards.pop() for _ in range(5)] # pop first 5 card from shuffled deck 
>>> hand 
[29, 34, 25, 3, 46] 

Это самый близкий к реальной жизни, а также гарантирует, что карты не принимаются дважды. Вы можете использовать один и тот же подход для работы с другими картами: просто позвоните pop еще раз из все еще перетасованной колоды и добавьте карту в соответствующую руку.

+0

Похоже, вы работаете с Python 2, в то время как OP использует Python 3. Ему сначала нужно передать 'range (52)' в вызов 'list()'. – TigerhawkT3

0

Вы должны быть в состоянии сделать что-то вроде

hand=[] 
for i in range(2): 
    card=random.choice(deck) 
    hand.append(card) 
    deck.pop(card) 

Это даст вам руку 2 карты, и убедитесь, что вы не можете дубликаты карт , Важно, чтобы заново создать колоду таким образом, что он имеет все 52 карты снова в начале каждой игры, или адаптировать логику так, что это нечто большее, как:

hand=[] 
for i in range(2): 
    card=random.choice(deck) 
    if card in hand: #Note you will need to check every hand here 
    continue 
    else: 
    hand.append(card)