Coding for KidsCoding for Kids
창의적인 레벨도전 과제교사 가이드
기능 투표
고급 파이썬 개발 과정
챕터
>
레벨

예외 처리
사용자 정의 예외

목표

사용자 정의 예외를 사용하여 제품 주문이 포함된 메시지를 수집하고 캐리어 비둘기를 통해 발송하세요.

농장과 다른 정거장에 메시지를 전달하는 전령 비둘기를 통해 몇몇 메시지가 배포되고 있으므로, 일정보다 앞서기 위해 몇 개를 발송하는 것이 좋습니다. 우리는 일반 예외를 사용하여 오류를 포착해왔지만, 때로는 매우 특정한 상황에 맞는 사용자 정의 예외를 만드는 것이 유리할 수 있습니다. 이번에는 사용자 정의 예외를 사용하여 올바른 항목을 식별함으로써 메시지를 수집하고 비둘기를 선택할 것입니다.

사용자 정의 예외는 클래스를 생성하여 구성되며, (Exception) 절을 추가함으로써 예외를 실행할 수 있는 용도로 클래스의 기능을 재사용할 수 있습니다. 여기에서는 두 가지를 생성할 것입니다: 특정 문자열이 검증을 통과하지 않을 때 활성화되는 InvalidLocation과 숫자가 특정 임계값을 초과하는지 확인할 때 사용되는 UnsuitableSelection입니다.

class InvalidLocation(Exception): "Raised when location is invalid" pass class UnsuitableSelection(Exception): "Raised when pidgeon is 2 or younger" pass

이제 클래스가 설정되었으므로, 메시지를 수집하여 발송할 차례입니다. 다가오는 교환에 필요한 구성 요소를 저장하고 결합하기 위해 prep이라는 리스트를 생성하세요. 빨간색 카펫 위의 어두운 X 표시로 걸어가세요. X 표시가 있는 테이블 앞에 있는 일련의 테이블들 중에서 농장의 서쪽 구역으로 주문이 배달될 메모를 찾을 것입니다.

이 세그먼트에서는 네 개의 변수 상수인 red_memo, blue_memo, green_memoorange_memo가 사용됩니다. 오직 "west" 구역으로 배달되어야 하는 메모만 수집하여 발송할 수 있습니다. 메모를 채취할지 여부를 결정하기 위해, try/exceptelse 코드 블록을 InvalidLocation 사용자 정의 예외와 함께 사용할 것입니다. 사용자 정의 예외를 사용하기 위해, try 블록에서 메모가 "west"로 라벨링 되어 있는지 확인하고, 그렇지 않으면 예외를 발생시키도록 합니다. except 블록은 메모가 유효하지 않음을 확인하며, else 블록은 메모가 실제로 "west" 구역으로 배달되어야 함을 확인하면 메모를 수집하고 prep 리스트에 추가합니다. 예를 들면:

try: if red_memo != "west": raise InvalidLocation except InvalidLocation: player.speak("This is not an order that needs to be sent out") else: player.collect(red_memo) prep.append(red_memo)

각 색상 카펫 앞의 테이블에 있는 어두운 X 표시로 걸어가, 각 색상에 해당하는 올바른 변수 상수를 사용하여 예외 시퀀스를 실행하세요.

메모를 모두 수집한 후, 문 앞의 금색 X 표시로 걸어가 open() 함수를 사용하여 비둘기 집에 접근하세요. 내부로 들어간 후 밝은 X 표시로 걸어가서 돌아서, close() 함수를 사용해 문을 닫아 비둘기가 탈출하지 않도록 하세요.

보라색 카펫 위의 어두운 X 표시로 걸어가, 펜에서 비둘기가 메시지를 날릴 만큼 충분히 성숙한지 혹은 배달할 수 없는 아기 비둘기인지 확인할 것입니다. 이 세그먼트에서는 각 색상 카펫에 해당하는 purple_pen, yellow_pen, white_penpink_pen이라는 네 개의 변수 상수를 사용할 것입니다. 우리는 메모에서 사용했던 것과 동일한 기법, 즉 설정된 두 번째 클래스를 사용할 것입니다.

try/exceptelse 코드 블록과 UnsuitableSelection 사용자 정의 예외를 사용하여 비둘기가 메시지를 배달하기에 충분히 나이가 많은지 확인하세요. try 블록에서는 펜을 나타내는 변수 상수가 해당 비둘기가 2세 미만인지를 확인하여 적합한지 검증합니다. 만약 비둘기가 부적합하면 except 블록이 실행되고, 그렇지 않으면 else 블록이 활성화되어 메시지를 배달하기 위해 prep 리스트에 비둘기를 추가할 수 있게 합니다.

try: if purple_pen <= 2: raise UnsuitableSelection except UnsuitableSelection: player.speak("Pigeon unsuitable to deliver") else: prep.append(purple_pen) player.speak("Pigeon Collected")

각 색상 카펫 위의 어두운 X 표시로 걸어가, 해당하는 올바른 변수 상수를 사용하여 이 시퀀스를 실행하세요. 비둘기와 메모를 모두 수집한 후, 맨 아래의 금색 X 표시로 걸어가 생성한 prep 리스트를 인자로 하여 place() 함수를 사용해 비둘기를 배달시키고 레벨을 완료하세요.

코드북