Unit_1 poker

Unit_1 Poker 程序设计

概念收集

  1. hands, 一手牌有5张, hands == 5 hand
  2. hand, 一张牌有大小和花色 rank/suit
  3. poker

设计的程序poker功能:输入一系列不同的手牌,输出最大的手牌

手牌大小规则:

  1. 一样的称为条,有几张就是几条 -- n-kind
  2. 顺子:连续数字,不管花色 -- straight
  3. 同花:五张牌有相同的花色,不管数字 -- flush

rank规则

    手牌对应rank 
        
    0- High Card            数字大小
    1- One Pair             一对
    2- Two Pair             两对
    3- Three of a Kind      三条
    4- Straight             顺子
    5- Flush                同花
    6- Full House           葫芦
    7- Four of a Kind       四条
    8- Straight Flush       同花顺子 

给程序写测试

如果不写测试,那当你完成后你不知道你是否完成得正确,你对于将来可能有的变动是否会造成破坏也没有信心。

remember: to be a good programmer, you got to be a good tester.

通过断言写测试

# 缩写   全名           rank

# sf -- straight flush - 8 
# fk -- four kinds     - 7
# fh -- full house     - 6

def test():
    ''' Test cases for the functions in poker function '''
    sf = '6C 7C 8C 9C TC'.split()
    fk = '9D 9H 9S 9C 7D'.split()
    fh = 'TD TC TH 7C 7D'.split()
    assert poker([sf, fk, fh]) == sf
    assert poker([fk, fh]) == fk
    assert poker([fh, fh]) == fh
    assert poker([sf] + 99 * [fh]) == sf

    return 'tests pass'

推荐阅读更多精彩内容