总项目目标:用面向过程思想设计一个简单的纸牌游戏程序,称为"Higher or Lower"(高还是低)。游戏中,玩家需要猜测接下来的一张牌是比当前牌高还是低。根据猜测的准确性,玩家可以得到或失去相应的积分。为后续对比面向对象编程思想做准备。
项目1.4 打印抽出牌的点数和花色
import random
SUIT_TUPLE = ('黑桃', '红心', '梅花', '方块')
RANK_TUPLE = ('A', '2', '3', '4', '5', '6', '7', '8', '9', '10', 'J', 'Q', 'K')
def shuffle(deckListIn):
deckListOut = deckListIn.copy() # 生成一副牌的副本
random.shuffle(deckListOut) # 洗牌
return deckListOut
def getCard(deckListIn):
thisCard = deckListIn.pop() # 从牌组中取第一张牌
return thisCard
startingDeckList = []
for suit in SUIT_TUPLE:
for thisValue, rank in enumerate(RANK_TUPLE):
cardDict = {'rank': rank, 'suit': suit, 'value': thisValue + 1}
startingDeckList.append(cardDict)
gameDeckList = shuffle(startingDeckList)
currentCardDict = getCard(gameDeckList)
currentCardRank = currentCardDict['rank']
currentCardValue = currentCardDict['value']
currentCardSuit = currentCardDict['suit']
print('当前抽出的牌是', currentCardSuit+currentCardRank)
print("当前抽出的牌用于比较大小的值为", currentCardValue)
效果如下:
程序分析:
这段程序的功能是模拟一副扑克牌的洗牌和抽牌过程,并输出当前抽取的牌的信息。
程序定义了两个函数用于洗牌和抽牌
接下来,创建一个空列表startingDeckList
,用于存储生成的牌组。
通过两个嵌套的循环创建一个包含牌的字典cardDict
,其中包括点数、花色和用于比较大小的值,并将该字典添加到startingDeckList
列表中。
接下来,调用shuffle()
函数对startingDeckList
进行洗牌,将返回的洗牌后的牌组赋值给gameDeckList
。
然后,调用getCard()
函数从洗牌后的牌组gameDeckList
中抽取一张牌,将该牌的信息以字典形式保存在currentCardDict
中。
通过字典索引将抽取的牌的点数、花色和用于比较大小的值分别赋值给currentCardRank
、currentCardSuit
和currentCardValue
变量。
最后,程序打印输出当前抽取的牌的信息,包括花色和点数,以及用于比较大小的值。
注意:由于牌组是随机洗牌的,每次运行程序的结果可能不同。