Unit_1 Poker 程序设计
概念收集
- hands, 一手牌有5张, hands == 5 hand
- hand, 一张牌有大小和花色 rank/suit
- poker
设计的程序poker功能:输入一系列不同的手牌,输出最大的手牌
手牌大小规则:
- 一样的称为条,有几张就是几条 -- n-kind
- 顺子:连续数字,不管花色 -- straight
- 同花:五张牌有相同的花色,不管数字 -- 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'