파이썬 문법을 공부하자 3.2 - Bulls and Cows

r5z Yoon·2022년 9월 14일
0
import random
import time
from datetime import datetime

# 게임할 자리수 입력 및 정답 생성

def main():
    length = int(input("게임할 자릿수를 입력하세요.: "))
    random_numbers = set() #중복 없이

    while len(random_numbers) < length:
        random_numbers.add(random.randint(0, 9))
        #randint - 마지막 숫자 포함, randrange - 마지막 숫자 포함x

    random_numbers = list(random_numbers) # 리스트로 변환하여 숫자 정렬을 방지
    random.shuffle(random_numbers) # 숫자 섞기

# 게임 소요 시간 기록
    start_time = time.time()
    try_count = 0 # 사용자가 정답을 맞추기 위해 시도한 횟수

    while True:
        input_number = input("답을 입력하세요.:\n게임을 종료하고 싶다면, exit를 입력하세요.:") # str값이다
        if input_number == "exit": # exit으로 게임을 종료하거나 정답을 맞출 때까지 동작 반복
            return(print("게임 종료")) # return을 만나면 함수는 무조건 종료됨

        try_count += 1
        out_count = 0

        ball_count = 0
        strike_count = 0
        # 사용자가 입력 v 값과 랜덤하게 생성된 숫자를 비교함
        for i, v in enumerate(input_number): # 여기서는 인덱스로 비교한다고 볼 수 있음
            v = int(v) # 받은 값을 정수로 변환
            print(i, v)
            if v not in random_numbers: # 입력한 값이 포함되어 있지 않은 경우
                out_count += 1

            else: # 입력한 값이 포함되어 있는 경우
                if random_numbers[i] == v:
                    ball_count += 1
                else:
                    strike_count += 1

        if strike_count == length:
            print(f"정답입니다! {time.time() - start_time:.2f}"시간 동안 {try_count}번 만에 맞추셨습니다.")
            print(f"클리어 시간: {datetime.now()}")
            return

        print(f"{ball_count}{strike_count}스트라이크 {out_count}아웃")

main()
profile
_____ is a process </br> https://github.com/R5Z

0개의 댓글