without haste but without rest
[python/계프] 3주차 과제 - 포커 본문
포커
import random
# 스트레이트: 연속된 네개 숫자, A432나 AKQ2도 연속이라고 봄
# 숫자 부분을 'AKQJ98765432'에서의 위치로 정렬, 연속인가 검사
def strait(hand):
nlist = []
for s, a in hand:
nlist.append(numbers.index(a))
nlist.sort()
for i in range(1, 4):
if nlist[i] == 0 and nlist[i - 1] == 11:
continue
if nlist[i] != nlist[i - 1] + 1:
return False
# print(' ', nlist, end=' ')
return True
# 플러시: 같은 모양 네장
def flush(hand):
for a in range(0, 3):
if hand[a][0] != hand[a+1][0]:
return False
return True
# 포카드: 같은 숫자 네장 4
# 트리플 : 세 장이 같은 숫자 3
# 투페어: 두장씩 같은 숫자 22
# 원페어: 두장만 같은 숫자 2
def num_cards(hand):
res = {1: 'one-pair', 2: 'triple', 3: 'four-cards', 4: 'two-pair'}
count = 0
tmp = [x[1] for x in hand]
tmp.sort()
p1, p2 = tmp[:2], tmp[2:] # check for two-pair
if p1 != p2 and p1[0] == p1[1] and p2[0] == p2[1]:
print(res[4])
return True
for a in range(0, 3):
if tmp[a] == tmp[a+1]:
count += 1
if count > 0:
print(res[count])
return True
return False
# main
numbers = 'AKQJ98765432'
shapes = '◇♡♤♧'
deck = [(s, a) for a in numbers for s in shapes] # tuple
# print(deck)
for indx in range(0, 48, 4):
for card in deck[indx:indx + 4]:
print(''.join(card), end=' ')
print()
print()
while True:
random.shuffle(deck) # 덱을 섞어서
for indx in range(0, 48, 4): # 네 장씩 패를 돌림
hand = deck[indx:indx + 4] # 각 패에 대해
hand.sort() # 문자열 순서대로 소팅
for card in hand:
print(''.join(card), end=' ') # 패를 출력
if strait(hand):
print('strait')
elif flush(hand):
print('flush')
elif num_cards(hand):
continue
else:
print('none')
print()
input()
'Homework' 카테고리의 다른 글
[C / 자료구조] 1주차 과제 - 하노이 탑 (0) | 2020.04.04 |
---|---|
[C / 자료구조] 1주차 과제 - 재귀 (0) | 2020.04.04 |
[python/계프] 4주차 과제 - 경기 기록 (0) | 2020.04.04 |
[python/계프] 2주차 과제 - 12진수 변환 (0) | 2020.04.04 |
[python/계프] 1주차 과제 - 가장 차이가 큰 항 구하기 (0) | 2020.04.04 |
Comments