比如,玩家手牌: ['♠5', '♥5', '♠2'],电脑手牌: ['♥8', '♦A', '♣4']
玩家手牌中的点数最大的是5,而花色♠最大,所以玩家最大的牌是'♠5'
电脑手牌中的点数最大的是A,所以电脑最大的牌是 '♦A'
最后,玩家和电脑做比较:
先比点数,电脑是A,玩家是5,所以电脑直接胜出(不用再比花色)
规则搞清楚了,就可以分两步走:
可以看到找出玩家点数最大的牌和找出电脑点数最大的牌几乎一样,我们重点讲解找出玩家点数最大的牌。
比如玩家手牌 player= ['♠5', '♥5', '♠2']
比较的思路是:
先默认玩家手牌中的第一张牌是最大的。
即player_max = player[0]
然后开始遍历玩家手牌,
如果第二张牌的点数比player_max更大,
player_max直接替换成第二张牌的点数。
如果第二张牌的点数和player_max一样大,
再来比较第二张牌和player_max的花色,最终决定player_max的值
以此类推,再把第三张牌和player_max做比较
全部遍历完后,player_max的值就是玩家手牌中最大的了。
知识点讲解:
1、for card in player:
……
player 是列表,存放着玩家的三张手牌,
for循环遍历player,表示card分别取到三张手牌
2、card[1:] 取点数,card[0]取花色
card拿到牌之后,要分离出点数和花色
比如card = "♠5",card是字符串,和列表操作一样,也可以用索引号来访问数据,索引号从0开始。
card[0]可以取花色,比如card[0] = "♠"
注意:不要认为card[1]就是点数,因为如果card="♠10"呢?
所以去点数要从第1个元素取到最后,即card[1:]取点数
3、用index来比较点数和花色
在程序最开始已经交代了所有点数和花色。
这里有个特殊问题:
解决方案:可以利用列表位置来比较大小。
列表.index 是 Python 列表的一个方法,作用是查找某个元素在列表中第一次出现的位置(索引)。
可以看到:在ranks列表中,点数越大,位置越靠后,index的值越大
同理,在suits列表中,花色越大,位置越靠前,index的值越小
拿到了玩家的最大牌player_max和电脑的最大牌computer_max- 玩法:可以持续对战,胜者可以在剩余的牌堆中取一张牌,继续比较