2011-05-07 69 views
1

我正在做一个洗牌程序。最后我用for loop打印出10张随机卡,但我不知道它有什么问题。需要我的洗牌方案帮助

在结束deal_card(card),为什么我把card因为我的H/W这么说,但如果你有其他的答案我会好好听你说什么。

这是我的计划:

import random 

def define_cards(): 
    rank_string = ("ace","two","three","four","five","six","seven","eight","nine","ten","jack","queen","king") 
    suit_string = ("clubs","diamonds","hearts","spades") 
    cards = [] 
    for suit in range(4): 
     for rank in range(13): 
      card_string = rank_string[rank] + " of " + suit_string[suit] 
      cards.append(card_string) 
     return cards 

def create_deck(deck): 
    for i in range(52): 
     deck.append(i) 
     return 

def shuffle_deck(deck): 
    random.shuffle(deck) 
    return 

def deal_card(deck): 
    return deck.pop(0) 

deck=[] 

create_deck(deck) 
shuffle_deck(deck) 
print "The first 10 cards are:" 
for i in range(10):    # I don't know why won't work 
    deal_card(card) 
    print define_cards() 

打印出来chould样子:

The first 10 cards are: 
queen of hearts 
ten of diamonds 
... 

回答

6

既然你define_cards已经产生卡名称的列表,你应该用它来生成甲板代替create_deck。然后在for循环中处理一张卡片并打印出来。

deck = define_cards() 
shuffle_deck(deck) 
print "The first 10 cards are:" 
for i in range(10): 
    card = deal_card(deck) 
    print card 

只要做到这一点,程序就会从卡组顶部打印十张卡片。但是,define_cards仍然有一个小错误。你能发现它吗?提示:定位return。代码

+0

是不是应该只有4个空间,与'在范围内(4)'和在'cards.append(card_string)'或者下面'cards.append(card_string)'whit 12的空间相同级别空间?I尝试是工作的两种方式,有什么不同? – phhnk 2011-05-07 07:31:40

+0

@phhnk:根据缩进情况,'return'要么在'for'循环中,要么在两者之后。在'for'循环完成之后,你会想要它,所以4个空格。在问题中的版本(8个空格)中,您只能看到* clubs *卡片。 – dancek 2011-05-07 07:43:39

+0

哦,我明白了现在怎么样了,非常感谢... – phhnk 2011-05-07 08:05:44

3

一半是多余的:

>>> import random 
>>> deck = range(1,52) 
>>> random.shuffle(deck) 
>>> deck 
[4, 38, 40, 18, 35, 44, 50, 22, 49, 26, 8, 45, 14, 20, 25, 34, 37, 51, 42, 29, 24, 28, 27, 30, 7, 47, 23, 3, 10, 2, 9, 39, 6, 16, 12, 17, 11, 41, 33, 48, 5, 1, 36, 21, 13, 32, 43, 19, 15, 31, 46] 
+2

你的套牌缺少一张卡片... – 2011-05-07 06:55:27

+0

我知道我没有如此干净地回答这个问题,但我仍然感谢你的帮助,tho。谢谢 – phhnk 2011-05-07 07:07:06

1

你可能要考虑创建一个类卡和类甲板保持一副扑克牌。这会给你更清晰的代码。