Pythonでトランプのデッキをシャッフルしてカードを引く方法
Pythonを使ってトランプのデッキ(52枚のカード)をシャッフルしたい場合、「itertools」と「random」という2つの標準ライブラリを活用するのが便利です。特に「random」ライブラリには shuffle メソッドが用意されており、リスト内の要素をランダムに並べ替えることができます。
ここでは、デッキを作成してシャッフルし、そこからランダムに5枚のカードを引くプログラムを紹介します。
サンプルコード
import itertools, random
# 1〜10の数字と4つのスート(マーク)の組み合わせでデッキを作成
my_deck = list(itertools.product(range(1, 11), ['Spade', 'Heart', 'Diamond', 'Club']))
print("The cards are being shuffled")
random.shuffle(my_deck)
print("Cards are drawn at random")
print("They are : ")
for i in range(5):
print(my_deck[i][0], "of", my_deck[i][1])実行結果
The cards are being shuffled Cards are drawn at random They are : 1 of Diamond 5 of Diamond 4 of Club 2 of Spade 4 of Heart
※ 実行するたびに結果は変わります。これは乱数によってシャッフルされるためです。
コードの解説
- まず、必要なパッケージである「itertools」と「random」をインポートします。
- 「itertools」の
productメソッドを使い、数字(1〜10)とスート(スペード・ハート・ダイヤ・クラブ)のすべての組み合わせを持つカードのデッキをリスト形式で生成します。 - 生成したリストは、「random」ライブラリの
shuffleメソッドによってランダムに並べ替えられます。 - その後、処理の進行状況を伝えるメッセージを表示します。
- forループを使ってシャッフル済みのデータから先頭の5枚を取り出し、各カードの数字とスートをコンソールに出力します。
応用ポイント
このプログラムは簡単にカスタマイズできます。たとえば、range(1, 11) を range(1, 14) に変更すればJ・Q・Kも含めた完全な52枚のデッキになりますし、range(5) の数値を変えれば一度に引く枚数を調整できます。また、カードを引いた後に my_deck.pop() を使えば、引いたカードをデッキから除外することも可能です。
-
Pythonで単利(シンプルインタレスト)を計算する方法をわかりやすく解説
本記事では、Python 3.xを使って単利(シンプルインタレスト)を計算する方法について詳しく解説します。金融計算の基礎となる単利の概念から、実際のコード実装まで、初心者の方にもわかりやすいように順を追って説明していきます。 単利とは? 単利とは、元本に対してのみ利息が発生する計算方式です。複利と異なり、発生した利息が次期の元本に加算されないため、計算式がシンプルなのが特徴です。 単利は「1日あたりの利率 × 元本 × 支払いまでの経過日数」を掛け合わせることで求められます。 単利の計算式 数学的には、以下の公式で表されます。 単利(SI)=(P × T × R)÷ 100 各変数の意味は次
-
Pythonで学ぶ選択ソートの基本原理と実装方法をわかりやすく解説
本記事では、選択ソート(Selection Sort)の基本的な仕組みと、Python 3.xでの実装方法について詳しく解説します。 選択ソートとは? 選択ソートは、ソートされていない部分から最小値の要素を繰り返し見つけ出し、それを先頭に移動させることで配列全体を整列していくアルゴリズムです。処理の過程では、与えられた配列が次の2つの部分配列に分けられます。 すでにソートが完了している部分配列 まだソートされていない部分配列 選択ソートの各イテレーション(反復処理)では、未ソート部分から最小要素を取り出し、ソート済み部分の末尾に挿入していきます。この操作を繰り返すことで、最終的に配列全体