Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/342.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 列表中的随机选择_Python_Python 3.x - Fatal编程技术网

Python 列表中的随机选择

Python 列表中的随机选择,python,python-3.x,Python,Python 3.x,我想从列表中随机选择一些东西,但是,如何使它在调用时不能再次选择 这是一个纸牌游戏,我想选择一个价值的西装显示在左上角和右下角,但只有一个价值的每一张卡的西装应该被选择 card_value = ['A', 'K', 'Q', 'J','10', '9', '8', '7', '6', '5', '4', '3', '2', '1'] card_value = choice(card_value) 我想选择一个西服值显示在左上角和右下角,但每张西服卡只能选择一个值您可以使用内置的pythonr

我想从列表中随机选择一些东西,但是,如何使它在调用时不能再次选择

这是一个纸牌游戏,我想选择一个价值的西装显示在左上角和右下角,但只有一个价值的每一张卡的西装应该被选择

card_value = ['A', 'K', 'Q', 'J','10', '9', '8', '7', '6', '5', '4', '3', '2', '1']
card_value = choice(card_value)

我想选择一个西服值显示在左上角和右下角,但每张西服卡只能选择一个值

您可以使用内置的python
random
库来执行此操作。您应该在中阅读更多关于选项的信息,您可以在其中给出选择选项的概率和更多功能

card_value = ['A', 'K', 'Q', 'J','10', '9', '8', '7', '6', '5', '4', '3', '2', '1']
card_value = choice(card_value)
import random

card_value = ['A', 'K', 'Q', 'J','10', '9', '8', '7', '6', '5', '4', '3', '2', '1']
print(random.choice(card_value))

目前,您的代码无法执行任何操作,因为您正在重新分配值
card\u值

但是,您可以使用来自random的两种方法执行所需的输出

from random import choice, shuffle

choices = ['A', 'K', 'Q', 'J','10', '9', '8', '7', '6', '5', '4', '3', '2', '1']

shuffle(choices)

def pick_a_card(l):
    return l.pop()

card_value = pick_a_card(choices)
print(card_value)
card_value = pick_a_card(choices)
print(card_value)
print(choices)


# Or use choice and remove

def pick_a_card(l):
    card = choice(l)
    l.remove(card)
    return card

choices = ['A', 'K', 'Q', 'J','10', '9', '8', '7', '6', '5', '4', '3', '2', '1']


card_value = pick_a_card(choices)
print(card_value)
card_value = pick_a_card(choices)
print(card_value)
print(choices)
shuffle
洗牌列表,您只需执行
pop


choice
获取一个随机元素,然后您只需重新激活它

您可以编写一个函数,从
卡值
中采样一个值,并将其删除:

def pick_a_card(deck):
    import numpy as np

    # index of the card to pick
    i = np.random.randint(low = 0, high = len(deck)-1)

    # value of the card picked
    pick = deck[i]

    # remove only that card from the deck
    del deck[i]

    # the returns the card picked and the deck without it
    return pick, deck
然后,您可以拨打:

choice, card_value = pick_a_card(card_value)

如果这不适合您的问题,请告诉我。

而不是使用
选择
函数,您可以获得一个随机整数作为索引,并在列表中使用
pop()

随机导入
卡片价值=['A'、'K'、'Q'、'J'、'10'、'9'、'8'、'7',
'6', '5', '4', '3', '2', '1']
random\u card=card\u value.pop(random.randint(0,len(card\u value)-1))

但是请注意,如果列表为空,这将抛出一个
ValueError
,我将创建一个包含所有卡片等的列表。“kh”=红心之王等等。然后这样做,并将拾取的卡移动到另一个阵列,以便它们不能从牌组中拾取

import random
def random_card():
    # Clubs = c, Spades = s, Hearts = h, Diamonds = d
    deck = ['kc', 'ks', 'kh', 'kd', 'qc']
    picked_cards = []
    selected_card = random.choice(deck)
    print('selected card ' + selected_card)
    picked_cards.append(selected_card)
    deck.pop(deck.index(selected_card))

我不确定添加严重依赖性是否是最佳解决方案:)