2024.12.02 과제 수정 및 리턴기능

과제 평가 기준을 보니까 사용자 입력값을 제한하는게 있었다.

  • 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(): 치명적인 오류 발생 시 프로그램을 완전히 종료할 때.