Python에서 카드 덱(deck)을 섞어야 할 때는 itertools와 random 패키지를 함께 사용하면 됩니다. 특히 random 라이브러리에는 데이터를 무작위로 섞어주는 shuffle() 메서드가 내장되어 있어, 별도의 복잡한 로직 없이 간단하게 카드를 셔플할 수 있습니다.
예제 코드
import itertools, random
my_deck = list(itertools.product(range(1, 11), ['Spade', 'Heart', 'Diamond', 'Club']))
print("카드를 섞는 중입니다")
random.shuffle(my_deck)
print("카드를 무작위로 뽑습니다")
print("뽑은 카드는 다음과 같습니다:")
for i in range(5):
print(my_deck[i][0], "of", my_deck[i][1])실행 결과
카드를 섞는 중입니다 카드를 무작위로 뽑습니다 뽑은 카드는 다음과 같습니다: 1 of Diamond 5 of Diamond 4 of Club 2 of Spade 4 of Heart
※ 실행할 때마다 무작위로 결과가 달라지므로 위 출력은 예시입니다.
코드 설명
- 패키지 임포트: 먼저 필요한
itertools와random모듈을 가져옵니다. - 덱 생성:
itertools.product()메서드를 사용해 숫자(1~10)와 문양(Spade, Heart, Diamond, Club)의 모든 조합으로 이루어진 카드 덱을 리스트 형태로 만듭니다. - 셔플: 생성된 리스트를 random 라이브러리의
shuffle()메서드로 무작위 순서로 섞습니다. - 메시지 출력: 진행 상황을 알려주는 안내 문구를 화면에 표시합니다.
- 반복 출력: 섞인 덱에서 앞의 5장을 반복문으로 순회하며 하나씩 꺼냅니다.
- 결과 표시: 뽑힌 카드의 숫자와 문양을 콘솔에 출력합니다.
추가 팁
실제 표준 52장 덱을 만들고 싶다면 range(1, 11) 대신 range(1, 14)를 사용하고, J·Q·K·A를 문자열로 추가하면 됩니다. 또한 카드를 한 장씩 뽑아 제거하려면 my_deck.pop() 메서드를 활용하는 것도 좋은 방법입니다.