Python

[2025.03.01] 숫자야구 게임 만들기

polibo 2025. 3. 4. 09:36
  • 3월 1일에 나와서 숫자야구 게임을 만들어봄
  • 규칙
    • 0에서 9까지 4개의 중복없는 숫자를 뽑음. (0이 앞에 와도 상관X)
    •  사용자가 4개의 중복없는 숫자를 뽑아서 정답 숫자와 비교해봤을 때, 뽑은 숫자가 정답 숫자에 포함되어 있으면 갯수에 따라 n 볼, 그 숫자의 자리까지 맞으면 n 스트라이크임. 

 

# 2025.03.01.(토)
# 4자리 숫자 0~9, 중복X
# 숫자가 포함되어 있음 ==> n볼
# 자리수까지 맞음 ===> n스트라이크

import random

print("숫자야구 게임을 시작합니다.")
count = 1

com_num_initial = []
while len(com_num_initial) < 4:
    com_num = random.randint(0, 9)
    switch = False
    for i in com_num_initial:
        if i == com_num:
            switch = True
            break

    if switch:
        # print("컴퓨터 숫자 중복 발생")
        continue

    com_num_initial.append(com_num)
    com_num = com_num_initial
# print("컴퓨터가 선택한 숫자: ",com_num)

while True:
    user_initial = []
    while len(user_initial) < 4:
        user_num = input("4개의 숫자를 입력해주세요: ")
        if user_num.isnumeric() == False:
            print("0 ~ 9 사이의 숫자를 입력해주세요!!")
            continue
        user_num = int(user_num)
        if not 0 <= user_num <= 9:
            print("0 ~ 9 사이의 숫자를 입력해주세요!!")
            continue

        switch = False
        for i in user_initial:
            if i == user_num:
                switch = True
                break
        if switch:
            print("중복된 숫자입니다. 다시 입력해주세요.")
            continue

        user_initial.append(user_num)
        user_num = user_initial
    # print("선택한 번호: ", user_num)

    strike = 0
    ball = 0
    for i in range(4):
        if user_num[i] == com_num[i]:
            strike += 1
        elif user_num[i] in com_num:
            ball += 1

    if strike == 4:
        print(f"{count}회차: 정답입니다!")
        break
    else:
        print("컴퓨터가 선택한 숫자: ", com_num)
        print("사용자가 선택한 숫자: ", user_num)
        print(f"{count}회차: {strike} 스트라이크, {ball} 볼 입니다.")

    count += 1