创建一个函数,返回从洗牌牌组中抽出的5张牌的列表,其中没有替换牌

2024-05-23 15:23:02 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在创建一个函数,返回一个5张牌的列表,这些牌是从洗牌牌组中抽出的,不需要替换。我必须运行10000次函数,并计算5张牌包含4张同类牌的次数,例如:['2张黑桃牌','3张梅花牌','2张钻石牌','2张黑桃牌','2张红心牌']。下面是我到目前为止的代码

import random


suits = ['Spades','Clubs','Hearts','Diamonds']
cards = list('23456789JQKA')
cards.insert(8,'10')
deck = [card+' of '+suit for card in cards for suit in suits]


def draw_wo_replacement(deck):
    for i in range (5):
        newdeck=[]
        index = random.randint(0,len(deck)-1)
        card = deck[index]
        deck.pop(index)
        newdeck.append(card)
    return newdeck
print(draw_wo_replacement(deck))

我试图打印的新卡片组只有一个值,不知道为什么循环不起作用。我不确定我怎么能运行这10000张卡,也不知道如何计算5张卡包含4张同类卡的次数


Tags: 函数inforindexrandomcard次数cards
1条回答
网友
1楼 · 发布于 2024-05-23 15:23:02

您想在draw_wo_replacement函数中返回一个列表。因此,您必须首先创建一个空列表,并将所需内容附加到该列表中,然后返回新列表。但在这个函数中,您要做的是在每次迭代中创建新的列表,并向其中添加新的卡片。因此,它将返回一个列表,最后有一张卡片。(你要的最后一张牌。你必须知道为什么现在)

把你的功能改成:

def draw_wo_replacement(deck):
    newdeck=[]
    for i in range (5):
        index = random.randint(0,len(deck)-1)
        card = deck[index]
        deck.pop(index)
        newdeck.append(card)
    return newdeck

相关问题 更多 >