프로그래밍/파이썬

파이썬 - 야구게임

31weeks 2023. 3. 14. 12:00
728x90
반응형

상대방이 생각한 3자리 숫자를 맞추는 야구게임의 규칙

 

  1. 게임 참가자는 상대방이 생각한 3자리 숫자를 맞추기 위해 3자리 숫자를 말한다.
  2. 상대방은 말한 숫자와 비교하여 세 자리 중에 하나의 숫자가 같고 자리도 같은 경우 "스트라이크(S)"로, 하나의 숫자는 맞지만 자리가 다른 경우 "볼(B)"로 알려준다. 맞는 숫자가 없을 경우 "아웃(O)"으로 알려준다.
  3. 게임 참가자는 상대방이 알려준 스트라이크와 볼의 수를 바탕으로 다시 1번 과정을 반복한다.
  4. 게임 참가자는 상대방이 생각한 숫자를 모두 맞출 때까지 1~3번의 과정을 반복한다.

 

예를 들어,  상대방이 숫자 123을 생각한 경우,

  • 게임 참가자가 456을 말하면, 상대방은 "스트라이크: 0, 볼: 0"이라고 알려준다.
  • 이어서 게임 참가자가 789를 말하면, 상대방은 "스트라이크: 0, 볼: 0"이라고 알려준다.
  • 이렇게 게임 참가자가 123을 맞출 때까지 1~3번의 과정을 반복하면 된다.

 

 

반응형

 

 

이러한 규칙을 기준으로 파이썬 코드를 구현해보면 아래와 같다.

import random

def generate_random_number():
    """
    무작위로 세 자리 숫자를 생성합니다.
    """
    numbers = [str(i) for i in range(10)]
    random.shuffle(numbers)
    return "".join(numbers[:3])

def get_user_input():
    """
    사용자로부터 세 자리 숫자를 입력받습니다.
    """
    while True:
        user_input = input("숫자를 입력하세요: ")
        if user_input.isnumeric() and len(user_input) == 3:
            return user_input
        print("세 자리 숫자를 입력하세요.")

def compare_numbers(answer, guess):
    """
    정답과 추측한 숫자를 비교하여 스트라이크와 볼의 개수를 반환합니다.
    """
    strikes = 0
    balls = 0
    for i in range(3):
        if answer[i] == guess[i]:
            strikes += 1
        elif answer[i] in guess:
            balls += 1
    return strikes, balls

def play_game():
    """
    게임을 시작합니다.
    """
    answer = generate_random_number()
    print()
    print("세 자리 숫자 야구 게임을 시작합니다!")
    while True:
        guess = get_user_input()
        strikes, balls = compare_numbers(answer, guess)
        if strikes == 3:
            print("정답입니다!")
            break
        print(f"{strikes}스트라이크, {balls}볼입니다.")
        print()

play_game()

 

 

728x90

 

 

이 코드는 사용자로부터 세 자리 숫자를 입력받고, 그 입력값과 무작위로 생성된 숫자를 비교하여 스트라이크와 볼의 개수를 출력하고 게임이 끝날 때까지 이 과정을 반복한다.

 

게임이 끝날 때는 "정답입니다!"라는 메시지가 출력되고 프로그램이 종료된다.

 

 

야구게임 실행

728x90
반응형