[Codeit - python] 숫자 맞히기 게임

SUNGJIN KIM·2021년 9월 11일
2

codeit

목록 보기
1/18

문제

1과 20 사이의 숫자를 맞히는 게임을 만들려고 합니다.

random 모듈과 input 함수를 활용하여 프로그램을 만들어 보세요.

진행 방식

프로그램을 실행하면 "기회가 번 남았습니다. 1-20 사이의 숫자를 맞혀 보세요: "가 출력됩니다. 총 네 번의 기회가 주어지며, 사용자가 한 번 추측할 때마다 남은 기회 횟수가 줄어듭니다.
정답을 맞히면 "축하합니다.
번 만에 숫자를 맞히셨습니다."가 출력되고 프로그램은 종료됩니다.
사용자가 입력한 수가 정답보다 작은 경우 "Up"이 출력되고, 입력한 수가 정답보다 큰 경우 "Down"이 출력됩니다.
정답이 틀렸으면 1번부터 다시 진행합니다. 만약 네 번의 기회를 모두 사용했는데도 답을 맞히지 못했으면, "아쉽습니다. 정답은 *입니다."가 출력되고 프로그램은 종료됩니다.

시뮬레이션 #1
기회가 4번 남았습니다. 1-20 사이의 숫자를 맞혀보세요: 10
Up
기회가 3번 남았습니다. 1-20 사이의 숫자를 맞혀보세요: 15
Up
기회가 2번 남았습니다. 1-20 사이의 숫자를 맞혀보세요: 17
축하합니다. 3번만에 숫자를 맞히셨습니다.

시뮬레이션 #2
기회가 4번 남았습니다. 1-20 사이의 숫자를 맞혀보세요: 19
Down
기회가 3번 남았습니다. 1-20 사이의 숫자를 맞혀보세요: 14
Down
기회가 2번 남았습니다. 1-20 사이의 숫자를 맞혀보세요: 6
Up
기회가 1번 남았습니다. 1-20 사이의 숫자를 맞혀보세요: 10
UP
아쉽습니다. 정답은 12였습니다.

문제풀이

import random

# 코드를 작성하세요.
quiz = random.randint(1,20)
quiz_solve = 0
chance = 4

while chance != 0 :
    quiz_solve = int(input(f"기회가 {chance}번 남았습니다. 1-20 사이의 숫자를 맞혀보세요 : "))
    
    if quiz_solve > quiz:
        print("Down")
        chance -= 1
    elif quiz_solve < quiz:
        print("Up")
        chance -= 1
    else:
        break

if quiz == quiz_solve:
    print(f"축하합니다. {chance}번만에 숫자를 맞히셨습니다.")
else:
    print(f"아쉽습니다. 정답은 {quiz}였습니다.")

처음에는 while문이 아닌 chance를 바탕으로 for 문으로 진행하려고 했으나, 생각보다 코드가 너무 길어질 것으로 예상되어 while문을 사용하여 코드를 작성하였다.

풀이는 이렇게 되었으나, 조금 더 생각해보니, 사실 "else: brake"문은 필요가 없는 것 같아 아래와 같이 코드를 수정하였다.

while chance != 0 or quiz == quiz_solve :
    quiz_solve = int(input(f"기회가 {chance}번 남았습니다. 1-20 사이의 숫자를 맞혀보세요 : "))
    
    if quiz_solve > quiz:
        print("Down")
        chance -= 1
    elif quiz_solve < quiz:
        print("Up")
        chance -= 1

필요없는 코드를 줄일 수 있도록 생각을 많이 작성해보고 생각을 다양하게 할 필요가 있다고 생각된다.

profile
#QA #woonmong

0개의 댓글