코드잇의 실습 문제 1.
실습과제
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였습니다.
셀프 채점
다음 항목들이 제대로 구현되었는지 확인해 보세요!
"기회가 4번 남았습니다"부터 "기회가 1번 남았습니다"까지 기회가 줄어들면서 출력된다.
정답이 입력값보다 큰 경우 "Up", 작은 경우 "Down", 같은 경우 정답 메시지가 잘 출력되었는지 확인한다.
정답을 맞춘 경우, 몇 번만에 맞혔는지 출력한다.
4번의 기회를 모두 사용했는데도 답을 맞히지 못했으면 정답이 출력된다.
정답을 맞혔을 경우, "아쉽습니다"와 "축하합니다"가 동시에 출력되지 않는다.
import random
number = random.randint(1, 20)
chance = 4
cnt = 0
while True:
num_input = int(input("기회가 {0}번 남았습니다. 1-20 사이의 숫자를 맞혀 보세요: ".format(chance)))
if num_input == number:
cnt += 1
print("축하합니다. {0}번 만에 숫자를 맞히셨습니다.".format(cnt))
break
elif num_input > number:
chance -= 1
cnt += 1
print("Down")
else:
chance -= 1
cnt += 1
print("Up")
if cnt == 4:
print("아쉽습니다. 정답은 {0}였습니다.".format(number))
break