我正在尝试用python制作一个基本的21点游戏,我想创建一个名为Deck的新列表。我希望Deck在一个列表中有所有可能的花色/等级配对(即心形王牌,心形2号,心形3号等),这样我就可以在random.shuffle或.pop风格中开始“交易”。
我如何将这两个列表配对,或者我必须自己键入它?
下面是当前的代码:
print ("Welcome to the Blackjack Table! May I have your name?")
user_name = input("Please enter your name:")
print ("Welcome to the table {}. Let's deal!".format(user_name))
import random
suits = ["Heart", "Diamond", "Spade", "Club"]
ranks = ['A', '2', '3', '4', '5', '6', '7', '8', '9', '10', 'J', 'Q', 'K']
values = {'A':1, '2':2, '3':3, '4':4, '5':5, '6':6, '7':7, '8':8, '9':9, '10':10, 'J':10, 'Q':10, 'K':10,}
deck = 发布于 2015-08-19 03:53:22
使用嵌套的list comprehension将每个等级与每个花色配对。
deck = [(rank, suit) for rank in ranks for suit in suits]itertools.product可以用来完成同样的事情:
import itertools
deck = list(itertools.product(ranks, suits))发布于 2015-08-19 03:51:05
所以你要做的就是把每一套衣服和每个等级配对。下面的代码使用两个嵌套的for loops实现了这一点
deck = [] # create an empty list
for suit in suits:
for rank in ranks:
deck.append((suit, rank)) # append a tuple to the list
print len(deck) # prints 52, as expected更具pythonic风格的方法是使用list comprehension。它稍微快一点,但可能不那么直观(或更直观)。
deck = [(suit, rank) for suit in suits for rank in ranks]https://stackoverflow.com/questions/32081407
复制相似问题