목차

이전 항목

17. 올바른 지점 찾아가기

다음 항목

19. 다시 장애물!

현재 문서

주의사항

해당 문서는 중요 변경 작업 중에 있습니다. 일부 문서에 텍스트가 빠져있거나, 불어로 플레이스홀더(placeholder) 자리차지만 되어 있을 수 있습니다.

18. 제말을 들어보세요... 그렇지 않다면...

프로그램을 작성하는 것을 배우는 것이 재미있을지 모르지만, 컴퓨터 앞에서 많은 시간을 보내고 싶지는 않을 것입니다. if, 만약 비가 내린다면, 책을 읽고, 그렇지 않다면 밖으로 나가서 노세요! 예 심지어 할아버지도 말입니다.

18.1. 선택지가 두개...

윗 문장을 if 만약을 갖는 문장으로 다시 작성합니다:

if 만약 비가 내린다면,
    책을 계속 읽고,
그렇지 않다면,
    밖으로 나서 나가서 논다.

상기 문장이 파이썬이라면, 대신 다음과 같이 작성할 수 있다:

if it_rains():
    keep_reading()
else:
    go_outside_and_play()

넵, 파이썬에는 키워드 else``로, 하나 이상 가능성을 포함할 수 있다. 이것을 사용하는 다른 예제를 살펴보자. 리보그가 본인 앞에 바로 벽이 있는지를 알 수 있다. **Around1** 세상을 생각해보자. 새로운 조건 ``front_is_clear()``을 사용해서 리보그 앞에 벽이 있는지 없는지를 판단할 수 있고, ``if/else 짝을 함께 사용해서 세상을 돌아다니는데 리보그를 안내하는 프로그램을 작성할 수 있따. 코드는 다음과 같다:

def move_or_turn ():
    if front_is_clear():
        # 무언가 수행한다.
    else:
        # 다른 무언가 수행한다.

repeat 40:
    move_or_turn()

시도해 보기!

상기 코드를 사용하는 프로그램을 작성해서 리보그가 Around 1 세상을 돌아다니게 한다. 이것을 작성한 다음에, (한줄 추가해서) 프로그램을 변형해서 리보그가 각 코너에 토큰을 놓도록 한다.

힌트

def turn_or_move():
    if front_is_clear():
        move()
    else:
        turn_left()
        put()

repeat 40:
    turn_or_move()

18.2. if/else 관해서 생각하는 방법

defif 문을 코드 덩어리를 삽입하는 것과 (때때로) 동치되는 것으로 것으로 봤다; 예외가 if 문 조건이 거짓(False) 일 경운데, 이런 경우 코드 덩어리가 무시되어서 삭제하는 것과 동치가 된다. 따라서, if/else 문장은 한 코드 덩어리 혹은 다른 코드 덩어리를 경우에 따라서 삽입하는 것으로 볼 수 있다. 따라서,

move()
if True:
    turn_right()
else:
    turn_left()
move()

상기 코드는 다음에 상응한다.

move()
turn_right()
move()

반면에,

move()
if False:
    turn_right()
else:
    turn_left()
move()

상기 코드는 다음에 상응한다.

move()
turn_left()
move()

상기 내용을 다음과 같은 순서도로 표현할 수 있다:

../_images/else.jpg