重庆seo网站设计网站开发容易学吗
石头剪刀布游戏 (100)
- 剪刀石头布游戏,A-石头、B-剪刀、C-布
 - 游戏规则: 
- 胜负规则,A>B; B>C; C>A;
 - 当本场次中有且仅有一种出拳形状优于其他出拳形状,则该形状的玩家是胜利者,否则认为是平局,没有赢家,有多个胜利者时,同为赢家;
 - 若三家出拳分别是A、B、C,出现三方优势循环,为平局;
 - 两个玩家出拳分别是A、B,出拳A的获胜;
 
 
输入描述:
 玩家ID 出拳形状,玩家数量<=1000
 输出描述:
 输出赢家的ID列表, 按字符串升序排列,每个ID占一行;
 如果没有赢家,输出NULL字符串
示例1
 输入:
 abc1 A
 xyz B
 输出:
 abc1
示例2
 输入:
 abc1 A
 xyz A
 输出:
 NULL
示例3
 输入:
 abc1 A
 def A
 alic A
 xyz B
 输出:
 abc1
 alic
 def
思路:
- 以字典统计每种出拳的玩家,出拳为key,值为玩家列表
 - 当字典的长度为2时,才有赢家(A-B、B-C、C-A)
 
from collections import defaultdict
players = defaultdict(list)i = 0
while True:try:pid, symbol = input().strip().split()players[symbol].append(pid)i += 1if i == 4:raise EOFError("模拟结束异常")except EOFError:  # 结束输入# key 为 2时  会有赢家if len(players) == 2:if players["A"] and players["B"]:players["A"].sort()for i in players["A"]:print(i)elif players["A"] and players["C"]:players["C"].sort()for i in players["C"]:print(i)else:players["B"].sort()for i in players["B"]:print(i)else:# 没有赢家print("NULL")break
