【Python】 トランプを作成しランダムに2枚取得

■トランプの作成方法

▼前提条件
①トランプの数字が以下の場合はアルファベットに変更する
「 1 」のときは「 A 」
「 11 」のときは「 J 」
「 12 」のときは「 Q 」
「 13 」のときは「 K 」
②ジョーカーは作成しないものとする。

▼トランプ作成処理概要(メイン処理)
マークの配列に「’スペード’, ‘ハート’, ‘クローバー’, ‘ダイヤ’」を格納(4種類)する。
番号の配列に「トランプの番号作成する関数」で作成した番号(1から13の番号)を格納する。
トランプの配列に「マーク+番号」の形式で値を格納(計52枚)する。
トランプの配列からランダムに2枚取得する。
※1度取得したトランプについては取り除き、2枚同じカードが出力されないようにする。

▼トランプの番号作成する関数の処理概要
引数の任意の数について、13で割った余り(★)を取得する。
取得した値(★)について、
 (★)=0の時は「A」
 (★)=10の時は「J」
 (★)=11の時は「Q」
 (★)=12の時は「K」
 (★)=上記以外の時は「(★)+1」
とする。

■サンプルコード

# -*- Coding: utf-8 -*-
import random

# トランプの番号作成する関数
def CreateCard(num):
    # 13で割った余りを変数に格納
    n = num % 13

    # A:エース、J:ジャック、Q:クイーン、K:キングに変換
    if n == 0:
        cardNo = 'A'
    elif n == 10:
        cardNo = 'J'
    elif n == 11:
        cardNo = 'Q'
    elif n == 12:
        cardNo = 'K'
    else:
        cardNo = str(n + 1)

    return cardNo

# メイン処理
if __name__ == '__main__':

    # 初期処理(トランプのマークと番号を入れる配列セット)
    mark = ['スペード', 'ハート', 'クローバー', 'ダイヤ']
    cardnum = []

    # マークと番号を格納する変数
    trump = []

    # トランプの番号作成:枚数分(13枚)繰り返し
    for i in range(13):
        # トランプの数字を取得
        resultnum = CreateCard(i)
        # 配列に番号を追加
        cardnum.append(resultnum)

    # マークと番号を格納する
    for i in range(len(mark)):
        for j in range(len(cardnum)):
            trump.append(mark[i]+ cardnum[j])


    # ランダムに2枚出力
    for i in range(2):
        # ランダムな数をセット
        # トランプ  :   0〜51(52枚)
        rand_card = random.randint(0, len(trump)-1)

        # 1枚出力
        print(trump[rand_card])

        # 出力したカードは削除
        trump.pop(rand_card)

■出力結果(例)

スペード6
クローバー9

コメント

タイトルとURLをコピーしました