2015-10-20 183 views
-2

我正在为大学任务制作21点,并且我需要将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() 

谢谢

肖恩

+1

添加代码来质疑自己。 – hjpotter92

回答

1

你怎么在一个真正的游戏做的事:它重新创建平台,使得它具有再次全部52张每场比赛的开始,或调整逻辑,这样它的东西更像是重要的卡?您不会选择随机数字,并查看该数字对应的卡号是否已被使用。你只需将shuffle的甲板牌再从牌组中移入牌手手中。

>>> 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张牌,并确保你不能复制卡。

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) 
相关问题