我正在尝试编写一个程序,在两个玩家之间进行游戏 我目前仍然试图删除第一手处理的副本。
这是我到目前为止的代码,它只删除了一个欺骗。我想知道是否有人可以通过允许删除所有欺骗来帮助我增强它
#sorts player1 cards and removes the pairs
player1.sort()
print "hand for player 1:"
print cards.hand_string(player1)
newplayer1 = []
player1points = 0
newplayer1, player1points = cards.drop_pair(player1)
print cards.hand_string(newplayer1)
S =黑桃 d =钻石 H =心 C =俱乐部
对于这个游戏,玩家每人将获得8张牌
TS TD JH QS QC AC AD AH
我的代码导致了这一点
JH QS QC AC AD AH
我想要它导致这个
JH AH
提前谢谢
答案 0 :(得分:2)
如果排序无关紧要:请改用set()或dict()。否则,您必须遍历整个列表并从列表中删除项目。或者您维护有序列表并通过第二个字典跟踪列表中的唯一项目。在将新项目插入列表之前,首先检查该项目是否已经存在于dict的一侧 - 这对于大型列表是可行的 - 对于小型列表而言,这是一种过度杀伤力。
答案 1 :(得分:1)
答案 2 :(得分:0)
您可以调用该功能一次又一次地移除一个欺骗,直到没有留下任何欺骗。
答案 3 :(得分:0)
因此,在我看来,套装在匹配方面并不重要。 unique_hand_values = [手中的h [h [0]]获取所有卡值的列表(没有套装)。
从那里你可以循环和比较,因为它们按顺序排序:
for index, hand_value in enumerate(unique_hand_values):
if index + 1 < len(hand_value) and hand_value == unique_hand_values[index + 1]:
# its a duplicate
答案 4 :(得分:0)
from itertools import groupby
from operator import itemgetter
player1 = ['TS', 'TD', 'JH', 'QS', 'QC', 'AC', 'AD', 'AH']
new_player1 = []
groups = groupby(player1, key=itemgetter(0))
for key, group in groups:
group = list(group)
if len(group)%2:
new_player1.append(group[-1])
print new_player1