Coding 공부/Big data & Python

[Python_example] 숫자 야구 게임 코드

CBJH 2024. 2. 5.
728x90
반응형
import random

random_num = random.sample(range(10), 3)
print(random_num)  # 테스트
game_count = 0
check_list = []
random_num_list = []
num_list = []
for i in random_num:
    random_num_list.append(str(i))

while True:
    if game_count == 9:
        print(
            "야구게임에서 패배했습니다."
        )  # 9번 기회를 초과하면 숫자를 받지 않고 게임 오버
        break
    if num_list == random_num_list:
        print("축하합니다. 게임에서 승리했습니다!!!")
        break

    user_input_num = input("0~9 숫자 3개를 입력하세요: ")
    if len(user_input_num) == 3:
        num_list = []
        count = 0
        ball = 0
        out = 3
        strike = 0
        for i in user_input_num:
            num_list.append(i)
        for i in num_list:
            for j in num_list:
                if i == j:
                    count += 1

        if count > 3:
            print("중복되는 숫자가 있다!")
            continue  # 중복되는 숫자가 있으면 이후 코드 생략하고 반복문 재실행

        if user_input_num in check_list:
            print("이미 입력한 숫자입니다. 다시 입력하세요!")
            continue
        check_list.append(user_input_num)

        for i in range(0, len(num_list)):
            if num_list[i] in random_num_list:
                if num_list[i] == random_num_list[i]:
                    strike += 1
                else:
                    ball += 1
        out = 3 - (strike + ball)

        print(f"{out} out, {strike}strike, {ball}ball")
        game_count += 1
        print(f"{game_count}번째 실행 중 입니다.")

    else:
        print("숫자 3자리를 입력하세요.")

print 부분이나 for 구문이 자바와 많이 헷갈려서 코드 확인하는데 시간이 많이 걸렸다.

random_num = random.sample(range(10), 3)

>>> radom_num에 0~9사이 숫자 3개를 중복 없이 인트형 요소로 리스트에 저장한다. 

game_count += 1

게임 카운트를 설정하여 9가되면 게임오버가 되도록하는데, 9회째에 게임이 끝나지 않도록 생각하는데 시간이 오래 걸렸다.

input()으로 받은 user_input_num은 문자열로 저장되기 때문에 strike, ball, out 카운트를 적용할 때, 형 변환을 사용해줘야되서 시간이 오래 걸렸다.

 

다음시간엔 이 코드를 함수, 클래스, 모듈로 작성해보겠다. 

댓글