Skip to main content
 首页 » 编程设计

python之我的洗牌程序需要帮助

2025年05月04日11sxdcgaq8080

我正在做一个洗牌程序。最后我使用 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 的定位。