我正在制作modified blackjack game
。仅使用纸牌2到9进行游戏。此卡组中无十张,面子卡或A。
首先,我创建了可变套牌,其中包含一个空列表。
然后,我创建了4个for loops
,将卡片列表附加到卡片组上。
我想知道是否有较短的方法可以编写以下内容:
import random
deck = []
for list_of_cards in range(2, 10):
spades = 'spades'
list_of_spades = str(list_of_cards) + ' of' + ' ' + spades
deck.append(list_of_spades)
for list_of_cards in range(2, 10):
clubs = 'clubs'
list_of_clubs = str(list_of_cards) + ' of' + ' ' + clubs
deck.append(list_of_clubs)
for list_of_cards in range(2, 10):
diamonds = 'diamonds'
list_of_diamonds = str(list_of_cards) + ' of' + ' ' + diamonds
deck.append(list_of_diamonds)
for list_of_cards in range(2, 10):
hearts = 'hearts'
list_of_hearts = str(list_of_cards) + ' of' + ' ' + hearts
deck.append(list_of_hearts)
结果就像我想要的那样:
['2 of spades', '3 of spades', '4 of spades', '5 of spades', '6 of spades', '7 of spades', '8 of spades', '9 of spades', '2 of clubs', '3 of clubs', '4 of clubs', '5 of clubs', '6 of clubs', '7 of clubs', '8 of clubs', '9 of clubs', '2 of diamonds', '3 of diamonds', '4 of diamonds', '5 of diamonds', '6 of diamonds', '7 of diamonds', '8 of diamonds', '9 of diamonds', '2 of hearts', '3 of hearts', '4 of hearts', '5 of hearts', '6 of hearts', '7 of hearts', '8 of hearts', '9 of hearts']
由于我是Python的新手,所以我假设有一种写得更短的方法。谢谢您的帮助!
最佳答案
两个for循环就足够了:
deck = []
for suit in ('spades', 'hearts', 'diamonds', 'clubs'):
for n in range(2, 10):
deck.append('%i of %s' % (n, suit))
您还可以使用列表理解来编写它:
deck = ['%i of %s' % (n, suit) for suit in ('spades', 'hearts', 'diamonds', 'clubs') for n in range(2, 10)]