더북(TheBook)

이 연습문제의 목적은 다양한 패(hand)가 나올 확률을 평가하는 것이다.

1. http://thinkpython2.com/code에서 다음 파일을 받는다.

Card.py

이 장에서 소개한 Card, Deck, Hand 클래스의 전체 버전

PokerHand.py

손에 들린 포커 카드를 표현한 클래스의 미완성 구현과 이를 테스트하기 위한 약간의 코드

2. PokerHand.py를 실행하면 이 프로그램은 7카드 포커 핸드를 처리하고 핸드 중에 플러시가 포함되어 있는지 확인한다. 실습을 계속하기 전에 코드를 주의 깊게 읽어야 한다.

3.(Hand)에 들린 카드가 어떤 조건을 충족하는지에 따라 True, False를 반환하는 has_pair, has_twopair 등의 메서드를 PokerHand.py에 추가하라. 에 몇 장의 카드가 있더라도 올바르게 동작해야 한다(57이 가장 일반적인 크기임).

4. 손에 대해 가장 높은 값을 분류하고 label 속성을 지정하는 classify 메서드를 작성하라. 예를 들어 카드 7장을 든 손은 플러시와 페어를 포함할 수 있다. 이런 경우에는 flush로 레이블을 붙여야 한다.

5. 분류 메서드가 제대로 동작한다고 생각되면 다음 단계는 다양한 손의 확률을 측정하는 것이다. PokerHand.py에 덱의 카드를 섞고, 손에 카드를 나눠주고, 손을 분류하고, 다양한 카드 패가 나오는 횟수를 카운트하는 함수를 작성하라.

6. 카드 분류와 확률을 표로 출력하라. 어느 정도 출력 값이 합당한 수준에 이를 때까지 손의 수를 늘려가면서 프로그램을 실행하자. 위키피디아의 핸드 랭킹 항목(https://en.wikipedia.org/wiki/List_of_poker_hands)의 값과 결과를 비교해보라.

해법: http://thinkpython2.com/code/PokerHandSoln.py

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.