- 간단한 프로그램 만들기 7 (야구게임)2026년 04월 17일
- 소쩍소쩍이
- 작성자
- 2026.04.17.:38
숫자 야구 게임 만들기
입력값은 예외가 없도록 처리해야 합니다.
게임 시작 시 컴퓨터는 0~9 사이 숫자 3개를 중복 없이 생성합니다.
사용자는 매 라운드마다 숫자 3개를 입력합니다.
숫자와 위치가 모두 맞으면 Strike
숫자만 맞으면 Ball
모두 틀리면 Out
총 9라운드 안에 정답을 맞추는 방식입니다.이번에는 간단한 숫자 야구 게임을 만들어봤습니다.
랜덤 숫자를 만들고, 입력값을 받아서 결과를 비교하는 구조입니다.
필요한 모듈
랜덤 숫자를 만들기 위해 random 모듈 하나만 사용합니다.
import random
랜덤 숫자 만들기
게임에서 사용할 정답 숫자를 만드는 부분입니다.
0~9 사이 숫자를 중복 없이 3개 뽑아서 리스트로 저장합니다.# 랜덤 숫자 받기 def generate_num(): numb = [] i = 0 new_num = 0 while i < 3: new_num = random.randint(0, 9) if new_num not in numb: numb.append(new_num) i += 1 print("게임이 시작되었습니다. 참가자는 숫자 3개를 맞춰 주세요") return numb
숫자 입력 받기
사용자가 숫자를 입력하는 부분입니다.
빈칸, 범위 초과, 중복 입력은 다시 입력하도록 처리했습니다.# 숫자 입력 def take_guess(): print("숫자 3개를 입력하세요.") i = 0 new_guess = [] while i < 3: gue_num = input(f"{i+1}번째 숫자를 입력하세요: ") if gue_num.strip() == "": print("빈칸입니다. 다시 입력하세요.") continue gue_num = int(gue_num) if gue_num > 9: print("범위를 벗어났습니다. 다시 입력하세요.") continue elif gue_num in new_guess: print("중복입니다. 다시 입력하세요. ") continue else: new_guess.append(gue_num) i += 1 return new_guess
결과 판정
입력한 숫자와 정답을 비교해서 Strike와 Ball을 계산합니다.
위치까지 같으면 Strike, 숫자만 맞으면 Ball입니다.# 스코어 def get_score(guess, sol): strike_count = 0 ball_count = 0 i = 0 while i < len(guess): if guess[i] == sol[i]: strike_count += 1 i += 1 elif guess[i] in sol: ball_count += 1 i += 1 else: i += 1 return strike_count, ball_count
게임 실행
이제 실제로 게임을 돌리는 부분입니다.
라운드를 반복하면서 결과를 출력하고, 3 Strike가 나오면 종료됩니다.# 실행 def game_start(): anser = generate_num() tries = 0 while True: tries += 1 print(f"\n[ {tries}번째 ]") gut = take_guess() strike, ball = get_score(gut, anser) if strike == 0 and ball == 0: print("OUT") else: print(f"{strike}Strike, {ball}Ball") if strike == 3: print("-----------------이겼습니다!!----------------------") break코드 전문
import random # 랜덤 숫자 받기 def generate_num(): numb = [] i = 0 new_num = 0 while i < 3: new_num = random.randint(0, 9) if new_num not in numb: numb.append(new_num) i += 1 print("게임이 시작되었습니다. 참가자는 숫자 3개를 맞춰 주세요") return numb # 숫자 입력 def take_guess(): print("숫자 3개를 입력하세요.") i = 0 new_guess = [] while i < 3: gue_num = input(f"{i+1}번째 숫자를 입력하세요: ") if gue_num.strip() == "": print("빈칸입니다. 다시 입력하세요.") continue gue_num = int(gue_num) if gue_num > 9: print("범위를 벗어났습니다. 다시 입력하세요.") continue elif gue_num in new_guess: print("중복입니다. 다시 입력하세요. ") continue else: new_guess.append(gue_num) i += 1 return new_guess # 스코어 def get_score(guess, sol): strike_count = 0 ball_count = 0 i = 0 while i < len(guess): if guess[i] == sol[i]: strike_count += 1 i += 1 elif guess[i] in sol: ball_count += 1 i += 1 else: i += 1 return strike_count, ball_count # 실행 def game_start(): anser = generate_num() tries = 0 while True: tries += 1 print(f"\n[ {tries}번째 ]") gut = take_guess() strike, ball = get_score(gut, anser) if strike == 0 and ball == 0: print("OUT") else: print(f"{strike}Strike, {ball}Ball") if strike == 3: print("-----------------이겼습니다!!----------------------") break game_start()순서도

'파이썬 > 문제 및 예제' 카테고리의 다른 글
간단한 프로그램 만들기 8 (로또 키오스크 만들기) (0) 2026.04.17 간단한 프로그램 만들기 1 (계산기) (0) 2026.04.16 함수 예제 및 문제 (0) 2026.04.13 리스트 예제 및 문제 (0) 2026.04.10 반복구조 예제 및 문제 (0) 2026.04.09 다음글이전글이전 글이 없습니다.댓글
스킨 업데이트 안내
현재 이용하고 계신 스킨의 버전보다 더 높은 최신 버전이 감지 되었습니다. 최신버전 스킨 파일을 다운로드 받을 수 있는 페이지로 이동하시겠습니까?
("아니오" 를 선택할 시 30일 동안 최신 버전이 감지되어도 모달 창이 표시되지 않습니다.)