소연의_개발일지
article thumbnail

오늘은 파이썬 함수를 활용하여 숫자야구를 만들어보는 시간을 가졌다. 

물론 저번에 만든거지만 이번엔 함수화해서 만든다는 것이 포인트... 

 

 

코드

import random
import os


#컴퓨터가 랜덤으로 숫자 3개 뽑음
def pick_random_number():
    """컴퓨터가 랜덤으로 숫자 3개 뽑는 함수"""
    random_number = random.sample(range(1,10),3)
    return random_number

def check_number(user_num):
    """사용자 숫자가 1부터 9까지인지, 숫자인지 아닌지, 3자리가 넘는지 체크"""
    user_num = ''.join(user_num)
    if not user_num.isdigit() or len(user_num) != 3:
        return False
    for i in user_num:
        if not '1' <= i <= '9':
            return False
    return list(user_num)

def compare_numbers(com_num, user_num):
    """컴퓨터와 유저의 숫자 비교하는 함수"""
    user_num = list(map(int, user_num))
    strike, ball = 0, 0
    for i in range(3):
        if user_num[i] == com_num[i]:
            strike += 1
        elif user_num[i] in com_num:
            ball += 1
    out = 3 - strike - ball
    print(f"{strike}스트라이크 {ball}볼 {out} 아웃")
    if strike == 3:
        print("게임을 승리했습니다!")
        return 1

def game_ment(cnt):
    """단순 멘트"""
    if cnt == 12:
        print("당신은 실패했습니다.")
    else:
        print(f"당신의 남은 기회는 {12-cnt}번")

def play_game():
    """숫자야구 게임을 실행하는 함수"""
    go_on = 'y'
    while go_on != 'n':
        #컴퓨터 숫자 랜덤 뽑기
        com_num = pick_random_number()
        print(f"컴숫자 확인용: {com_num}") #컴퓨터 숫자 확인용
        # 사용자가 한번 도전할 시작할 때마다 cnt 세줌. 이기면 win 세줌.
        life, win, cnt = 0, 0, 0
        cnt += 1
        while life < 12:
            #사용자가 숫자 입력
            while True:
                game_ment(life)
                guess = input(f"숫자 3개를 띄어쓰기로 유추하세요: ").split()
                user_num = check_number(guess)
                if user_num:
                    break
                else:
                    print("다시 입력하세요.")
            life += 1
            #자리수가 맞으면 스트라이크, 숫자가 있는데 자리수가 틀리면 볼, 숫자가 아예 없으면 out
            if compare_numbers(com_num, guess) == 1:
                print("승리했습니다.")
                win += 1
                break
        game_ment(life)
    # 사용자에게 계속할 것인지 물음. yes면 계속, 아니면 승률을 출력해줌.
        go_on = input("계속 게임하시겠습니까?(y/n): ").lower()
        os.system("cls")
    print(f"당신의 승률은 :{win/cnt*100}%")

#메인 함수
play_game()

실행화면

profile

소연의_개발일지

@ssoyxon

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!