python:扑克牌的生成与发牌
时间: 2024-01-30 17:05:06 浏览: 130
生成一副扑克牌可以用如下代码实现:
```python
import random
def generate_deck():
suits = ['♠', '♥', '♦', '♣']
ranks = ['A', '2', '3', '4', '5', '6', '7', '8', '9', '10', 'J', 'Q', 'K']
deck = []
for suit in suits:
for rank in ranks:
card = rank + suit
deck.append(card)
return deck
```
这个函数使用两个列表 `suits` 和 `ranks` 来生成每张牌的花色和点数,然后使用两个 `for` 循环来生成每张牌,将其添加到列表 `deck` 中,并最终返回 `deck` 列表,这个列表包含了一副完整的扑克牌。
接下来,我们可以实现一个发牌的函数,用来将一副牌发给多个玩家:
```python
def deal_cards(players, num_cards=5):
deck = generate_deck()
random.shuffle(deck)
hands = {}
num_players = len(players)
for i in range(num_players):
player_name = players[i]
hands[player_name] = deck[i*num_cards:(i+1)*num_cards]
return hands
```
这个函数接受一个玩家列表 `players`,以及每个玩家需要发到手中的牌数 `num_cards`,然后使用 `generate_deck` 函数生成一副牌,并通过 `random.shuffle` 函数打乱牌的顺序。接着,使用字典 `hands` 来保存每个玩家手中的牌,循环遍历每个玩家,将其名字作为键,从打乱后的牌堆中取出相应数量的牌,赋值给该玩家,最终返回字典 `hands`。
使用这两个函数,我们可以生成一副牌并将其发给玩家:
```python
players = ['Alice', 'Bob', 'Charlie']
hands = deal_cards(players, num_cards=5)
for player, cards in hands.items():
print(player + ':', cards)
```
这个程序将输出每个玩家手中的牌,例如:
```
Alice: ['9♠', 'Q♠', '3♠', 'A♦', 'J♣']
Bob: ['A♥', '5♠', 'K♠', '10♠', '8♠']
Charlie: ['7♥', '2♣', '5♥', '4♠', '9♥']
```
阅读全文