题解 | #HJ88 扑克牌大小#

扑克牌大小

http://www.nowcoder.com/practice/d290db02bacc4c40965ac31d16b1c3eb

解题思路:

首先定义一个列表或者字典表示扑克牌的大小(顺序),可以定义为[3,4,...,10,J,Q,K,A,2,joker,JOKER]['3','4',...,'10','J','Q','K','A','2','joker','JOKER']或者 {3:1,4:2,...,10:8,J:9,Q:10,K:11,A:12,2:13,joker:14,JOKER:15}\{'3':1,'4':2,...,'10':8,'J':9,'Q':10,'K':11,'A':12,'2':13,'joker':14,'JOKER':15\}. 若选择列表形式,则比较牌型对应的索引的大小;若选择字典形式,则比较牌型对应的字典的值。

若两手牌的数目相同,则比较两手牌的第一张牌。个子,对子,三个,炸弹,顺子的相互比较很好理解,若同为两张牌,可能有一手牌是王炸,这时比较两手牌的第一张牌也可以区分大小。(例如对A和王炸,比较第一张牌可以区分大小)。

若两手牌数目不同,则当且仅当一方为炸(含王炸)时两者可以比较大小,否则输出error。

这里选择用列表表示扑克牌的顺序,代码实现如下所示:

poke_info = ['3','4','5','6','7','8','9','10','J','Q','K','A','2','joker','JOKER']
 
input_poke = input().split('-')
poke_one, poke_two = input_poke[0], input_poke[1]
list_one, list_two = poke_one.split(), poke_two.split()
len_one, len_two = len(list_one), len(list_two)

if len_one == len_two:
    if poke_info.index(list_one[0]) > poke_info.index(list_two[0]):
        print(poke_one)
    else:
        print(poke_two)
else:
    if (poke_one == 'joker JOKER') | (poke_two == 'joker JOKER'):
        print('joker JOKER')
    elif len_one == 4:
        print(poke_one)
    elif len_two == 4:
        print(poke_two)
    else:
        print('ERROR')
全部评论

相关推荐

点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务