[英]How to create all combinations of one column's items and choose one of the other columns each time?
[英]how to put a condition for all combinations of 2 of a set variables equaling each other
spades = ['2S','3S','4S','5S','6S','7S','8S','9S','10S','JS','QS','KS','AS']
hearts = ['2H','3H','4H','5H','6H','7H','8H','9H','10H','JH','QH','KH','AH']
clubs = ['2C','3C','4C','5C','6C','7C','8C','9C','10C','JC','QC','KC','AC']
diamonds = ['2D','3D','4D','5D','6D','7D','8D','9D','10D','JD','QD','KD','AD']
suits = [spades,hearts,clubs,diamonds]
randomD = int(random.random()*4)
random4 = int(random.random()*(len(suits[randomD])-1))
CPcard1 = suits[randomD][random4]
del suits[randomD][random4]
for suit in suits:
if CPcard1 in suit:
CPcard1i = suit.index(CPcard1)
if CPcard2 in suit:
CPcard2i = suit.index(CPcard2)
if card1 in suit:
card1i = suit.index(card1)
if card2 in suit:
card2i = suit.index(card2)
if card3 in suit:
card3i = suit.index(card3)
我想为其中两个变量何时相同而不做一个条件...
if CPcard1 == CPcard2 or CPcard1 == card1 or CPcard1 == card2 (etc)
这是我正在制作的扑克模拟游戏的一部分。(注意:CPcard1和CPcard2属于第一个玩家,纸牌1,2和3属于表。所有纸牌都使用与上述CPcard1相同的方法找到)我只想使程序识别一对。 我是编码的新手,而且是菜鸟,所以对您的帮助非常感激:)
首先,关于设置的一些注意事项:选择随机卡的方式(a)麻烦,并且(b)不正确。 通过随机选择一个西装,然后从该西装中选择一张牌,即使该西装中只剩下一张(或没有!)牌,每套西装也有相同的被选择机会(1/4)。
相反,我建议按照与现实生活中相同的方式进行操作:将所有纸牌放在一个纸牌中,对纸牌进行洗牌 ,然后从洗过的纸牌中取出纸牌。
all_cards = spades + hearts + clubs + diamonds
random.shuffle(all_cards)
hand = [all_cards.pop() for _ in range(5)]
另外,您可以使用itertools.product
来代替手动枚举所有卡:
values = list('23456789') + ['10'] + list('JQKA')
suits = list('SHCD')
all_cards = [''.join(pair) for pair in itertools.product(suits, values)]
关于查找对(或三元组或四元组):最简单的方法是使用collections.Counter
。 但也请注意,您实际上不需要像==
那样将卡片相同。 相反,如果值相同就足够,西装也可以不同。
import collections
counts = collections.Counter([card[:-1] for card in hand])
在这里, card[:-1]
将获得从卡的字符串值,如'10'
,从'10S'
。 然后,您可以使用counts.most_common
获得最常见的counts.most_common
对(或三元组等)(如果有)。
例:
>>> hand
['3C', '6S', 'KC', 'JH', 'KH']
>>> counts
Counter({'K': 2, '3': 1, 'J': 1, '6': 1})
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.