업무 자동화/python & CAD
가위 / 바위/ 보 게임
ToolBOX01
2025. 8. 29. 15:32
반응형
이 코드는 Python으로 작성된 가위바위보 게임 프로그램입니다. 사용자가 가위, 바위, 보 중 하나를 선택하고, 컴퓨터가 무작위로 선택한 결과와 비교해 승패를 결정하는 게임입니다.
코드
import random
def play_game():
choices = ["가위", "바위", "보"]
computer = random.choice(choices)
while True:
user = input("가위, 바위, 보 중 하나를 선택하세요: ")
if user in choices:
break
print("잘못된 입력입니다. 가위, 바위, 보 중에서 선택하세요.")
print(f"\n사용자: {user}")
print(f"컴퓨터: {computer}")
if user == computer:
print("비겼습니다!")
elif (user == "가위" and computer == "보") or \
(user == "바위" and computer == "가위") or \
(user == "보" and computer == "바위"):
print("사용자가 이겼습니다!")
else:
print("컴퓨터가 이겼습니다!")
if __name__ == "__main__":
print("가위바위보 게임을 시작합니다!")
play_game()
while input("\n다시 플레이하시겠습니까? (y/n): ").lower() == 'y':
print("\n" + "="*40 + "\n")
play_game()
print("게임 종료! 감사합니다.")
프로그램 실행 결과
가위바위보 게임을 시작합니다!
가위, 바위, 보 중 하나를 선택하세요: 보
사용자: 보
컴퓨터: 바위
사용자가 이겼습니다!
다시 플레이하시겠습니까? (y/n): n
게임 종료! 감사합니다.
1. 모듈 임포트
import random
random 모듈을 가져옵니다. 이 모듈은 컴퓨터가 무작위로 가위, 바위, 보를 선택할 때 사용됩니다.
2. 게임 함수 정의
def play_game():
play_game() 함수는 가위바위보 게임의 핵심 로직을 담고 있습니다. 이 함수는 한 판의 게임을 실행합니다.
2-1. 선택지 정의와 컴퓨터의 선택
choices = ["가위", "바위", "보"]
computer = random.choice(choices)
2-2. 사용자 입력 처리
while True:
user = input("가위, 바위, 보 중 하나를 선택하세요: ")
if user in choices:
break
print("잘못된 입력입니다. 가위, 바위, 보 중에서 선택하세요.")
- while True 루프를 사용해 사용자가 올바른 입력(가위, 바위, 보)을 할 때까지 반복합니다.
- 사용자가 입력한 값(user)이 choices 리스트에 있는지 확인합니다.
1) 올바른 입력이면 루프를 종료(break)합니다.
2) 잘못된 입력이면 오류 메시지를 출력하고 다시 입력을 요청합니다.
2-3. 결과 출력
print(f"\n사용자: {user}")
print(f"컴퓨터: {computer}")
- 사용자가 선택한 값(user)과 컴퓨터가 선택한 값(computer)을 출력합니다.
- \n은 줄바꿈을 추가해 출력 결과를 깔끔하게 만듭니다.
2-4. 승패 결정
if user == computer:
print("비겼습니다!")
elif (user == "가위" and computer == "보") or \
(user == "바위" and computer == "가위") or \
(user == "보" and computer == "바위"):
print("사용자가 이겼습니다!")
else:
print("컴퓨터가 이겼습니다!")
- 비김: 사용자의 선택(user)과 컴퓨터의 선택(computer)이 같으면 "비겼습니다!"를 출력합니다.
- 사용자 승리: 다음 세 가지 경우에 사용자가 이깁니다.
1) 사용자가 가위를 선택하고 컴퓨터가 보를 선택했을 때
2) 사용자가 바위를 선택하고 컴퓨터가 가위를 선택했을 때
3) 사용자가 보를 선택하고 컴퓨터가 바위를 선택했을 때 - 컴퓨터 승리: 위 조건에 해당하지 않으면 컴퓨터가 이긴 것으로 간주하고 "컴퓨터가 이겼습니다!"를 출력합니다.
2-5. 메인 프로그램
if __name__ == "__main__":
print("가위바위보 게임을 시작합니다!")
play_game()
while input("\n다시 플레이하시겠습니까? (y/n): ").lower() == 'y':
print("\n" + "="*40 + "\n")
play_game()
print("게임 종료! 감사합니다.")
- if __name__ == "__main__":는 이 파일이 직접 실행될 때만 아래 코드를 실행하도록 합니다.
- 게임 시작 메시지를 출력합니다: "가위바위보 게임을 시작합니다!"
- play_game()을 호출해 첫 게임을 실행합니다.
- 게임이 끝난 후, 사용자에게 "다시 플레이하시겠습니까? (y/n): "를 물어봅니다.
1) 사용자가 y 또는 Y를 입력하면:
구분선을 출력("="*40)해 게임 간 구분을 명확히 하고, play_game()을 다시 호출합니다.
2) 사용자가 n 또는 다른 값을 입력하면:
"게임 종료! 감사합니다."를 출력하고 프로그램을 종료합니다. - .lower()는 사용자의 입력을 소문자로 변환해 y와 Y를 모두 처리할 수 있게 합니다.
전체 동작 흐름
- 프로그램이 시작되면 "가위바위보 게임을 시작합니다!" 메시지가 출력됩니다.
- 사용자는 가위, 바위, 보 중 하나를 입력합니다.
- 잘못된 입력이면 다시 입력하도록 안내합니다.
- 컴퓨터가 무작위로 가위, 바위, 보 중 하나를 선택합니다.
- 사용자와 컴퓨터의 선택을 출력하고, 승패를 결정해 결과를 출력합니다.
- 사용자가 다시 플레이할지 묻고, y를 입력하면 새 게임을 시작하고, n을 입력하면 게임이 종료됩니다.
5. 특징
- 무작위성: random.choice()를 사용해 컴퓨터의 선택이 무작위로 결정됩니다.
- 입력 검증: 사용자가 올바른 입력을 할 때까지 반복 요청해 오류를 방지합니다.
- 반복 플레이: 사용자가 원하면 여러 번 게임을 반복할 수 있습니다.
- 깔끔한 출력: 구분선과 줄바꿈을 사용해 게임 결과를 보기 좋게 출력합니다.
by korealionkk@gmail.com

반응형