【发布时间】:2020-10-22 22:30:06
【问题描述】:
我正在尝试在 python 的二维列表中选择一个随机元素。 我正在创建一个二十一点游戏。
我知道这段代码有多长且未经优化,但我是编程新手,我想通过犯错误来学习。
这是我设置的初始代码。我创造花色(黑桃、梅花、红心、方块)。我将它附加到名为 list_of_cards 的列表中,该列表被初始化为一个空数组。
然后我有另一个名为 player_card 的列表供玩家查看。这里供参考。
list_of_suits= [] #Creating list of cards
player_card = []
king_of_spades = 10 #Creating face cards for the spades deck.
queen_of_spades = 10
jack_of_spades = 10
king_of_clubs = 10
queen_of_clubs = 10
jack_of_clubs = 10
king_of_hearts = 10
queen_of_hearts = 10
jack_of_hearts = 10
king_of_diamonds = 10
queen_of_diamonds = 10
jack_of_diamonds = 10
ace_of_spades = [1,11] # Aces are either 1 or 11
ace_of_clubs = [1,11]
ace_of_hearts = [1,11]
ace_of_diamonds = [1,11]
spades = [ace_of_spades,2,3,4,5,6,7,8,9,10, jack_of_spades, queen_of_spades, king_of_spades]
clubs = [ace_of_clubs,2,3,4,5,6,7,8,9,10, jack_of_clubs, queen_of_clubs, king_of_clubs]
hearts = [ace_of_hearts,2,3,4,5,6,7,8,9,10, jack_of_hearts, queen_of_hearts, king_of_hearts]
diamonds = [ace_of_diamonds,2,3,4,5,6,7,8,9,10, jack_of_diamonds, queen_of_diamonds, king_of_diamonds]
list_of_suits.append(spades)
list_of_suits.append(clubs)
list_of_suits.append(hearts)
list_of_suits.append(diamonds)
这是随机卡片的选择器。它将遍历数组以随机选择四张牌中的一张。接下来,它将进入该数组并选择一张随机卡片。
random_list_of_suits = random.choice(list_of_suits)
random_card_number = random.choice(random_list_of_suits)
random_list_of_suits.remove(random_card_number)
player_card.append(random_card_number)
print player_card
print list_of_suits
这是我想要弄清楚的:如何每次都创建一个新的随机数?
我有点卡住了,我试着让它通过一个 for 循环,但如果我把 random_card_number 放在一个循环中,它会选择它最初执行四次的同一张随机卡。
【问题讨论】:
-
把
random.choice(list_of_suits)放在循环中,不要传入变量。 -
在更广泛的范围内,如果每张牌都是自我描述的,那不是更好吗?您可以将它们全部扔到一个“牌组”列表中,然后洗牌并从牌组中取出一张牌顶部(
poping 列表?)考虑为所有花色做类似spades = [(ace_of_spades, 'spades'), (2, 'spades'), (3, 'spades') ...]之类的事情,然后把你的牌堆放在一起。 -
显然,如果您准备好进入 OOP,则可以通过更大程度的控制来解决此问题,但我认为这是会产生最大影响的最小更改。
标签: python python-2.7 nested-lists