# Python 程序：打乱纸牌

> 原文： [https://www.programiz.com/python-programming/examples/shuffle-card](https://www.programiz.com/python-programming/examples/shuffle-card)

#### 在此程序中，您将学习使用`random`模块打乱一副纸牌。

要理解此示例，您应该了解以下 [Python 编程](/python-programming "Python tutorial")主题：

*   [Python `for`循环](/python-programming/for-loop)
*   [Python 模块](/python-programming/modules)
*   [Python `random`模块](/python-programming/modules/random)
*   [Python 编程内置函数](/python-programming/built-in-function)

* * *

## 源代码

```py
# Python program to shuffle a deck of card

# importing modules
import itertools, random

# make a deck of cards
deck = list(itertools.product(range(1,14),['Spade','Heart','Diamond','Club']))

# shuffle the cards
random.shuffle(deck)

# draw five cards
print("You got:")
for i in range(5):
   print(deck[i][0], "of", deck[i][1]) 
```

**输出**

```py
You got:
5 of Heart
1 of Heart
8 of Spade
12 of Spade
4 of Spade
```

**注意**：再次运行程序以洗牌。

在程序中，我们使用了`itertools`模块中的`product()`函数来创建一副纸牌。 此函数执行两个序列的笛卡尔积。

这两个序列是从 1 到 13 的数字和四个西装。 因此，总共有`13 * 4 = 52`个项目，每张卡都作为一个元组。 例如，

```py
deck[0] = (1, 'Spade')
```

我们的卡座是有序的，因此我们使用`random`模块中的`shuffle()`函数对其进行混洗。

最后，我们画出前五张卡片并将其显示给用户。 每次您运行该程序时，我们都会得到不同的输出，如两个输出所示。

在这里，我们使用了 Python 随附的标准模块`itertools`和`random`。