3 2 5 1 檢查一手撲克牌

2021-07-04 22:20:22 字數 1437 閱讀 7996

現在我們開始乙個乙個例子學習,把學習到的正規表示式進行綜合使用。這個例子使用正規表示式來檢查5

張撲克牌是否有效,為了顯示更好看,先寫乙個輸出函式:

def displaymatch(match):

if match is none:

return print(none)

return print('' % (match.group(), match.groups()))假定每一付牌要有

5張組成,使用

a表示王牌,

k表示國王,

q表示王后,j表示

jack,t

表示10

,2-9

表示相應的數字牌。下面的例子,就檢查這付牌是否有效:

valid = re.compile(r"^[a2-9tjqk]$")

displaymatch(valid.match("akt5q"))  # valid

displaymatch(valid.match("akt5e"))  # invalid.

displaymatch(valid.match("akt"))    # invalid.

displaymatch(valid.match("727ak"))  # valid.

結果輸出如下:

檢查一付撲克牌

none

none

這個例子裡,由於e

不存在,導致不合法;

akt只有

3張,達不到

5張所以也不合法。

正規表示式:r"^[a2-9tjqk]$"

,其中^

表示只從字串開始進行匹配;

表示匹配在中括號中任意的字元;

a2-9tjqk

表示字元集合,

2-9表示2到

9順序所有數字;{

5}表示至少匹配

5個字元,才算成功;

$表示詞尾前匹配。

在最後這手牌727ak

裡,會有兩個牌相同,那麼怎麼樣才可以把有相同的牌找出來,如下:

pair = re.compile(r".*(.).*\1")

displaymatch(pair.match("717ak"))     # pair of 7s.

displaymatch(pair.match("718ak"))     # no pairs.

displaymatch(pair.match("354aa"))     # pair of aces.

結果輸出如下:

none

在這個例子裡,使用正規表示式r".*(.).*\1"

,點號表示任意字元;

*表示任意重複;

(.)是表示匹配乙個字元作為一組;

.*表示之間可以有任意字元;

\1表示與前面分組相同的字元。如果想獲取那乙個字元重複,可以使用

group

來訪問。

python 左右兩隻手交換撲克牌

示例 小明手裡有兩張牌,左手紅桃 k 黑桃 a,小明交換兩手的牌後,手裡分別是什麼?思路 先找到物件 小明,左手 右手 紅桃 k 黑桃 a 根據物件找出對應的類 人 手 牌 根據需要寫出相應的邏輯,很可能反過來完善類的設計 按照題目要求建立相關物件,呼叫相關方法,實現相關功能 撲克類 class p...

C 列印一副撲克牌

public enum pokercolor this.color,this.num 表示一副撲克牌的類 class pokers 定義乙個陣列來存放52張撲克牌 poker pokers new poker 52 用於計數建立的撲克牌個數 int index 0 一副撲克牌類的構造方法 建立一副撲...

模擬 湊一手牌,求牌型方案數。c

模擬型別題 有 a b 張撲克牌。每張撲克牌有乙個大小 整數,記為a,範圍區間是 0 到 a 1 和乙個花色 整數,記為b,範圍區間是 0 到 b 1 撲克牌是互異的,也就是獨一無二的,也就是說沒有兩張牌大小和花色都相同。一手牌 的意思是你手裡有5張不同的牌,這 5 張牌沒有誰在前誰在後的順序之分,...