我正在做一个洗牌程序。最后我使用 for 循环 打印出 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()
打印出来应该是这样的:
The first 10 cards are:
queen of hearts
ten of diamonds
...
请您参考如下方法:
由于您的 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 的定位。
