본문 바로가기
문송에서 벗어나기

파이썬 자료형을 활용한 가위바위보 게임 코딩

by 조나빠 2024. 5. 16.
반응형

파이썬 문법은  어느것  하나 어렵지 않은 것이 없긴 하지만, 그중 자료형 챕터는 유독 내가 고전의 고전을 면치 못하는 챕터 중 하나이다.

 

리스트와 튜플, 그리고 딕셔너리의 특성을 활용한 가위바위보 게임은 많은 코딩교재에 대표 예제로 나와있고 매번 돌아서면 머릿속이 하얘지는 난제 중 하나이다. 풀이내용을 읽어도 도저히 이해가 안가는 부분이 있어 Chat-GPT에게 상세한 설명을 요청해 보았다. 

 

당신은 30년 경력의 코딩 개발자이자 코딩 입문자들을 대상으로 일타강의를 진행하고 있는 스페셜리스트입니다. 다음의 코딩을 스토리텔링식으로 코딩을 처음 배우는 사람에게 강의하듯이 한줄한줄 설명해 주세요.

import random

rps = ['가위', '바위', '보']

results = {
    ('가위', '보') : True,
    ('가위', '바위') : False,
    ('바위', '가위') : True,
    ('바위', '보') : False,
    ('보', '가위') : False,
    ('보', '바위') : True
    }

while True:
    player = input('가위/바위/보/끝: ')
    computer = random.choice(rps)
 
    if player == '끝':
        break
    print(player, computer)

    if player == computer:
        print('비겼어요!')
    elif results[(player, computer)] :
        print('이겼어요!')
    else:
        print('졌어요!')

 

안녕하세요! 코딩의 세계에 오신 것을 환영합니다. 오늘 우리는 '가위 바위 보' 게임을 만드는 코드를 통해 파이썬의 기본적인 개념들을 배워보겠습니다. 천천히 한 줄씩 살펴보겠습니다.

1. import random

첫 줄에서는 random이라는 모듈을 불러오고 있습니다. 이 모듈은 파이썬에서 제공하는 것으로, 난수(랜덤 숫자)를 생성하는 기능을 포함하고 있어요. 여기서는 컴퓨터가 랜덤하게 '가위', '바위', '보' 중 하나를 선택할 수 있도록 도와줍니다.

2. rps = ['가위', '바위', '보']

다음으로, rps라는 리스트를 만듭니다. 리스트는 여러 개의 값을 하나로 묶는 자료형이에요. 여기서는 '가위', '바위', '보'라는 문자열 세 개를 리스트로 묶어 놓았습니다.

3. results = { ('가위', '보') : True, ('가위', '바위') : False, ('바위', '가위') : True, ('바위', '보') : False, ('보', '가위') : False, ('보', '바위') : True }

이 부분에서는 딕셔너리라는 자료형을 사용합니다. 딕셔너리는 키-값 쌍으로 이루어져 있는데, 여기서 키는 ('가위', '보') 같은 두 개의 문자열 튜플이고 값은 True 또는 False입니다. 이 딕셔너리는 '가위 바위 보' 게임의 승패를 정해줍니다. 예를 들어, ('가위', '보')는 True이므로 가위가 보를 이긴다는 것을 의미합니다.

4. while True:

while 루프를 사용하여 게임이 계속 반복되도록 합니다. True 조건이 항상 참이기 때문에, 루프는 break 문을 만나기 전까지 계속 실행됩니다.

5. player = input('가위/바위/보/끝: ')

이 줄에서는 사용자의 입력을 받습니다. input 함수는 사용자가 콘솔에 입력한 값을 문자열로 반환합니다. 여기서는 사용자가 '가위', '바위', '보' 또는 '끝' 중 하나를 입력하게 유도합니다.

6. computer = random.choice(rps)

이 줄에서는 random 모듈의 choice 함수를 사용하여 리스트 rps에서 임의의 값을 하나 선택합니다. 즉, 컴퓨터가 무작위로 '가위', '바위', '보' 중 하나를 선택하게 합니다.

7. if player == '끝': break

사용자가 '끝'을 입력하면 게임을 종료합니다. if 문은 조건이 참인지 확인하고, 참이면 break 문을 실행하여 while 루프를 빠져나갑니다.

8. print(player, computer)

이 줄에서는 사용자가 선택한 것과 컴퓨터가 선택한 것을 출력합니다.

9. if player == computer: print('비겼어요!')

이 if 문은 사용자의 선택과 컴퓨터의 선택이 같으면 '비겼어요!'를 출력합니다.

10. elif results[(player, computer)] : print('이겼어요!')

이 elif 문은 results 딕셔너리에서 (player, computer) 키를 찾아 값이 True인 경우, 즉 사용자가 이긴 경우 '이겼어요!'를 출력합니다.

11. else: print('졌어요!')

마지막으로, 위의 두 조건이 모두 아닌 경우, 즉 사용자가 진 경우 '졌어요!'를 출력합니다.

 

이제 이 코드 전체를 살펴봤습니다. 한번 직접 입력해보고 실행해보세요. 코딩은 손으로 직접 해보는 것이 가장 좋은 방법입니다

 

코딩은 손으로 직접 해본다는 것, 참으로 중요하다. 하지만 나같은 문송에게는 코딩 한줄한줄에 대한 논리적인 설명 또한 그에 못지 않게 중요하다는 깨달음(?)을 얻게 하는 예제였다.  

 

반응형

댓글