소연의_개발일지
article thumbnail

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

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

 

 

1. 코드

<python />
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()

1.1. 실행화면

profile

소연의_개발일지

@ssoyxon

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