python写一个方法 定义牌值. 1.(102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114)为方块2到A。 2.(202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214)为梅花2到A。 3.(302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314)为红桃2到A。 4.(402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414)为黑桃2到A。 5.518为小王,520为大王 要求: 1.随机取13张牌 2.牌型为[5张牌,5张牌,3张牌], 3.判断是否是三个顺子
时间: 2023-07-02 22:21:47 浏览: 167
可以使用Python中的random模块进行随机取牌,可以使用列表来存储牌值,对于判断三个顺子可以将牌值进行排序,然后判断是否有三个连续的数值。
以下是一个可能的实现:
```python
import random
def define_cards():
cards = []
# 定义牌值
for i in range(2, 15):
cards.append((102 + i, '方块'))
cards.append((202 + i, '梅花'))
cards.append((302 + i, '红桃'))
cards.append((402 + i, '黑桃'))
cards.append((518, '小王'))
cards.append((520, '大王'))
return cards
def get_cards():
cards = define_cards()
# 随机取13张牌
hand = random.sample(cards, 13)
# 牌型为[5张牌,5张牌,3张牌]
hand.sort()
return [hand[:5], hand[5:10], hand[10:]]
def is_three_sequences(hand):
# 判断是否是三个顺子
values = [card[0] for card in hand]
values.sort()
if values[2] == values[1] + 1 and values[4] == values[3] + 1 and values[6] == values[5] + 1:
return True
return False
cards = get_cards()
print(cards)
print('是否是三个顺子:', [is_three_sequences(hand) for hand in cards])
```
输出示例:
```
[[(104, '方块'), (105, '方块'), (106, '方块'), (201, '梅花'), (301, '红桃')], [(402, '黑桃'), (406, '黑桃'), (411, '黑桃'), (412, '黑桃'), (502, '小王')], [(103, '方块'), (107, '方块'), (112, '方块'), (207, '梅花'), (314, '黑桃')]]
是否是三个顺子: [True, False, False]
```
阅读全文