PROGRAM PYTHON

Pythonスクリプト【配布したカードからペアのカードを除外する】

 

 

配布したカードの中からペアのカードを除外しよう

前回は53枚のカードを3人に配布するプログラムを作成しました。
今回は配布したカードの中から同じ数字のカードが2枚あったら除外するプログラムを作ります。
なお、同じ数字のカードが3枚あった場合は、2枚だけを除外して1枚は残すこととします。

 

ペアの存在を確認する処理

ペアの存在を確認する処理は、大きく3つのループからなっていて、下図のような構造になっています。
変数kを使ったループでペアが見つかった場合、ただちにそのループを抜けて、変数jを使ったループに戻ります。

card6-1

 

配布したカードの中からペアのカードを除外するプログラム

配布したカードの中からペアのカードを除外するプログラムは、以下のようになります。

40行目

人数分ループします。
今回は3人に配布するので、3回ループします。

43行目

ペアを配布されたカードから除外するため、その位置を保存する配列をarr_delとして作成します。
要素の初期値は0にします。

46~48行目

カードがジョーカー(JK)の場合は、配列arr_delの該当する位置に2を設定します。

51行目

基準位置を変数jとして、配列の先頭から開始します。

54、55行目

配列arr_delを参照して、変数jの位置の値が0以外(除外済みorジョーカー)の場合は、処理を飛ばします。

58行目

比較対象の位置を変数kとして、変数jの次の位置から順番に比較していきます。

61、62行目

配列arr_delを参照して、変数kの位置の値が0以外(除外済みorジョーカー)の場合は、処理を飛ばします。

65~71行目

変数jと変数kの位置の数字が同じだった場合は、配列arr_delの変数jと変数kの位置に1を設定してループを終了します。

74行目

処理をしている配列の要素を配列arr_tmpにコピーします。

77~79行目

配列arr_del1になっている位置の要素を、元の配列(cards)からremove()メソッドを使って削除します。
削除対象は要素の値を指定しています。

プログラムを実行すると、以下のように数字が同じペアのカードが除外されます。

 実行例
C:\>python card6-1.py
### 配布したカード
山田 ['SK', 'C8', 'C2', 'DT', 'S3', 'CT', 'H2', 'HJ', 'ST', 'D4', 'JK', 'D2', 'D7', 'S5', 'SA', 'H4', 'DQ', 'HT']
鈴木 ['H5', 'CA', 'C4', 'H9', 'CJ', 'H6', 'DA', 'C6', 'CK', 'D5', 'S4', 'S2', 'HK', 'H8', 'C9', 'CQ', 'S8', 'S7']
佐藤 ['SQ', 'C7', 'D9', 'C3', 'H3', 'H7', 'SJ', 'DK', 'D8', 'S6', 'HA', 'C5', 'D3', 'HQ', 'DJ', 'D6', 'S9']
 
### ペアのカードを除外
山田 ['SK', 'C8', 'S3', 'HJ', 'JK', 'D2', 'D7', 'S5', 'SA', 'DQ']
鈴木 ['CJ', 'S2', 'CQ', 'S7']
佐藤 ['DK', 'D8', 'HA', 'C5', 'D3']

 

 

-PROGRAM, PYTHON
-