과제 평가 기준을 보니까 사용자 입력값을 제한하는게 있었다.
- 1번 과제 완성도
- 사용자의 입력값을 ‘1과 10의 범위’로 제한할 수 있는가?
- 컴퓨터가 랜덤으로 숫자를 선택하게 할 수 있는가?
- 다중 if 문을 사용할 수 있는가?
- while문을 이용해서 게임를 반복시킬 수 있는가?
나름 최종 완성본!
import random
def start_game():
while True:
chosen_number = random.randint(1, 10)
print("=== 숫자 맞추기 게임 ===")
print(f"1과 10 사이의 숫자를 하나 정했습니다.\n이 숫자는 무엇일까요?")
while True:
try:
user_number = int(input("예상 숫자 : "))
if 1 <= user_number <= 10:
break
else:
print("입력값이 1과 10 사이가 아닙니다. 다시 입력하세요.")
except ValueError:
print("유효하지 않은 숫자입니다. 숫자를 입력해주세요.")
while user_number != chosen_number:
if user_number < chosen_number:
print("너무 작습니다. 다시 입력하세요.")
elif user_number > chosen_number:
print("너무 큽니다. 다시 입력하세요.")
user_number = int(input("예상 숫자 : "))
print("정답입니다!")
while True:
user_input = input("계속 하시겠습니까? (Y/N): ").upper()
if user_input == 'Y':
break
elif user_input == 'N':
print("게임을 종료합니다.")
return # N이면 게임 종료 exit() 사용가능
else:
print("잘못된 입력입니다. Y 또는 N을 입력하세요.")
start_game()
여기서 새로 알게된 사실이 있는데,
마지막 while문 elif에서 반복을 종료시키려면 평소 쓰던 break를 쓰면 게임이 다시 시작하는 오류가 생긴다.
그래서 원하는 방향으로 코드가 실행되게 하려면 return이나 exit()를 사용해야한다.
return은 함수내부에서만 쓸 수 있고 함수가 리턴을 만나면 즉시 실행이 종료된다.
exit()는 위치를 상관없이 사용할 수 있고 사용하면 즉시 프로그램 실행이 중단된다.
특성 | return | exit() |
기능 | 함수 실행을 종료하고 값을 반환한다. | 프로그램 전체 종료 |
영향 범위 | 함수 내부에서만 동작 | 프로그램 전체에 영향을 미친다. |
사용 위치 | 함수 내에서 사용 | 어디에서든 사용 가능 |
주된 목적 | 함수 결과 반환 | 프로그램 중단 |
적용 사례
- return: 함수 내 로직을 제어하거나 결과를 전달할 때.
- exit(): 치명적인 오류 발생 시 프로그램을 완전히 종료할 때.