翻閱了去年面試時候的題目,想想現在自己會用什麼方式重新完成這個題目,也正好最近在看python的typing模組及其他使用,使用物件導向的方式改寫了程式碼。
回顧並簡化題目:
寫出撲克牌排組,抽出13張牌,依照花色及大小排序
考慮一張牌有什麼特性?
建立一個Card類別,包含花色及數字兩個屬性。
其中花色的部分使用Enum,用auto()自動給予花色代表值
一個發牌器
想法上是一個牌組,可以透過牌組抽牌,並且要檢查牌被抽完時的狀況。
抽牌時為避免抽到重覆的牌,使用Set紀錄抽過的牌,出現過就必須重新抽取。
另外,發牌器不需要多個,因此不寫建構子__init__來產生實體物件,之後如果要開新局重複使用,只需加入一個method清空牌堆。
建立牌局
建立一個牌局實體,抽幾張牌由外面決定,作為參數傳入建構子。
目前還沒有要寫牌局邏輯,只有確認牌組是否正常。
結果
除了依花色的排序,梅花還是會排在方塊前面,也許Enum透過sort()時下的條件還要再研究調整一下。