import random
# 코드를 작성하세요.
ANSWER = random.randint(1, 20)
NUM_TRIES = 4
# 변수 정의
guess = -1
tries = 0
while guess != ANSWER and tries < NUM_TRIES:
guess = int(input("기회가 {0}번 남았습니다. 1-20 사이의 숫자를 맞혀 보세요: ".format(NUM_TRIES - tries)))
tries += 1
if ANSWER > guess:
print("Up")
elif ANSWER < guess:
print("Down")
if guess == ANSWER:
print("축하합니다. {0}번 만에 숫자를 맞히셨습니다.".format(tries))
else:
print("아쉽습니다. 정답은 {0}입니다.".format(ANSWER))
오답문제
: 일단 풀지 못했다. 모범답안을 가져왔는데, 내가 무슨 생각을 했길래 풀지 못했는가를 분석해보았다. 원인은 다음과 같다.
input()
를 출력하려면 꼭 print를 해야하는 줄 알았다.
guess 라는 변수에 input()
을 넣기만 해도 된다는 걸 알게됨
while 문의 조건을
tries < NUM_TRIES
만 했다.
그래서 답을 맞춰도 횟수만 차감되는 현상이 발생하였다. 일단 while의 조건이 true
가 발생하면 계속 반복된다. 그래서 guess != ANSWER
하여, 틀리면 True
가 나오게 하였다. 정답을 맞추거나, 시도 횟수가 최대 가능 횟수를 초과하면 False
가 나오게끔 설정하여 반복문을 탈출하게 한다!
정답을 맞출 경우에 나오는 문장을 출력하는 것을 반복문 안에서 해결하려고 했다.
이게 가능은 할 수 있는데, 생각해보니 while문에서 정답을 맞추거나, 횟수를 초과하면 알아서 빠져나온다. 그리고 조건문으로 정답을 맞췄다면, 축하합니다
, 횟수를 초과했다면 아쉽습니다
를 나오게 했어도 괜찮았던 것이다. 내가 너무 생각의 여유가 없었다고 생각한다.