Перемешивание колоды карт
В этом примере посмотрим, как создать колоду игральных карт и перемешать её с помощью стандартных модулей itertools и random.
Что нужно знать
Перед изучением примера полезно понимать:
Python: цикл for — цикл for
Модули Python — модули
/python-programming/modules/random/index — модуль random
Встроенные функции Python — встроенные функции
Исходный код
# 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.