我想从列表中随机选择某项,但是,如何制作它,这样如果调用它便无法再次选择它?
这是一款纸牌游戏,我想选择一套西服的值显示在左上角和右下角,但该套西服的每张纸牌只能选择一个值
card_value = ['A', 'K', 'Q', 'J','10', '9', '8', '7', '6', '5', '4', '3', '2', '1']
card_value = choice(card_value)
我想选择一个西服值显示在左上角和右下角,但是每张卡中只能选择一个西服值
答案 0 :(得分:1)
目前,您的代码无法执行任何操作,因为您正在重新分配值card_value
但是,您可以通过两种方法随机执行所需的输出
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
带有一个随机元素,之后您只需要删除它即可
答案 1 :(得分:0)
您可以使用内置的python random
库执行此操作。您应该在documentation中阅读有关选项的更多信息,在其中可以选择该选项和更多功能
import random
card_value = ['A', 'K', 'Q', 'J','10', '9', '8', '7', '6', '5', '4', '3', '2', '1']
print(random.choice(card_value))
答案 2 :(得分:0)
import random
items = ['here', 'are', 'some', 'strings', 'of',
'which', 'we', 'will', 'select', 'one']
rand_item = items[random.randrange(len(items))]
答案 3 :(得分:0)
您可以编写一个函数来对card_value
中的值进行采样,并将其从中删除:
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)
如果这不适合您的问题,请告诉我。
答案 4 :(得分:0)
而不是使用choice
函数,您可以获得一个随机整数作为索引并在列表上使用pop()
:
import random
card_value = ['A', 'K', 'Q', 'J','10', '9', '8', '7',
'6', '5', '4', '3', '2', '1']
random_card = card_value.pop(random.randint(0, len(card_value)-1))
但是请注意,如果列表为空,则会抛出ValueError
答案 5 :(得分:0)
我将列出所有卡片等。'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))