Перемешивание колоды карт

В этом примере посмотрим, как создать колоду игральных карт и перемешать её с помощью стандартных модулей itertools и random.

Что нужно знать

Перед изучением примера полезно понимать:

Исходный код

# 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])

Вывод

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

Примечание

Запустите программу ещё раз — порядок карт будет другим.

Как это работает

Колода создаётся функцией product() из модуля itertools — она строит декартово произведение двух последовательностей: чисел от 1 до 13 и четырёх мастей. Получается ровно 13 × 4 = 52 карты, каждая из которых — кортеж. Например:

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

Изначально колода упорядочена, поэтому мы перемешиваем её функцией shuffle() из модуля random. После этого берём первые пять карт и выводим. При каждом запуске порядок будет разным.

Здесь используются только стандартные модули itertools и random, входящие в поставку Python.