IT/Python
[Python] 포커 족보 검색기
잿호
2023. 9. 15. 23:41
설계
1. 숫자 : 에이스(A), 킹(K), 퀸(Q), 잭(J), 텐(T), 2~9
문양 : 스페이드(S), 하트(H), 다이아(D), 클로버(C)
총 합 52장의 카드 중 5장골라 포커 룰에 따라 그 족보를 확인한다.
2. 입력은 [숫자][문양]으로 이루어진 5자리 리스트로 받는다. EX) [6S, 5D, 2C, AS, KH)
코드
from collections import Counter
def handfind(cards):
numbers = [card[0] for card in cards]
patts = [card[1] for card in cards]
number_dict = {
'2': 2, '3': 3, '4': 4, '5': 5, '6': 6,
'7': 7, '8': 8, '9': 9, 'T': 10, 'J': 11,
'Q': 12, 'K': 13, 'A': 14
}
numbers.sort(key=lambda x: number_dict[x])
number_count = Counter(numbers)
is_straight = (len(set(number_dict[card] for card in numbers)) == 5) and \
(number_dict[numbers[-1]] - number_dict[numbers[0]] == 4)
is_flush = len(set(patts)) == 1
for number, count in number_count.items():
if count == 4:
return "포 카드"
if is_flush and is_straight:
return "스트레이트 플러시"
if sorted(number_count.values()) == [2, 3]:
return "풀 하우스"
if is_flush:
return "플러시"
if is_straight:
return "스트레이트"
for number, count in number_count.items():
if count == 3:
return "트리플"
pair_numbers = [number for number, count in number_count.items() if count == 2]
if len(pair_numbers) == 2:
return "투 페어"
elif len(pair_numbers) == 1:
return "원 페어"
return "하이카드"
#Output
cards = ['6C', '5C', '4C', '3C', '2C'] #카드 넣기
result = handfind(cards)
print(f"파이썬 포커 족보 판별 결과: {result}")
실행
01234
마무리
포커의 족보를 알려주는 프로그램입니다. 포커가 미숙하신분은 이용하시면 도움이 되실 것 같습니다.
반응형