주의사항
해당 문서는 중요 변경 작업 중에 있습니다. 일부 문서에 텍스트가 빠져있거나, 불어로 플레이스홀더(placeholder) 자리차지만 되어 있을 수 있습니다.
어떤 조건이 만족될 때까지 명령문을 반복하기 원할 때, 파이썬에서 좀더 간단한 방식으로 프로그램을 작성할 수 있는 새로운 키워드(while)를 사용할 수 있다. 예를 들어, 리보그가 벽에 도달할 때까지 계속 움직이게 한다고 가정하자. 이전에, 다음과 같이 코드를 작성해서 수행했다:
def move_until_wall():
if front_is_clear():
move()
repeat 42:
move_until_wall()
42 횟수가 벽에 도달할 충분한 반복 횟수가 되길 희망했다. while 을 사용해서는 다음과 같이 작성할 수 있다:
while front_is_clear():
move()
이것이다! 충분할만큼 매우 큰 횟수를 작업을 수행하도록 더이상 추측하거나 물어볼 필요가 없다.
상기 간단한 프로그램에 대한 순서도가 다음에 나와 있다:
다음 코드가 있다고 가정하자:
while condition():
do_1()
do_2()
do_3()
이것을 다음에 사응하는 것으로 간주할 수 있다:
if condition():
do_1()
do_2()
do_3()
if condition():
do_1()
do_2()
do_3()
if condition():
do_1()
do_2()
do_3()
if condition():
do_1()
do_2()
do_3()
....
상기 코드는 조건이 참(True) 으로 만족되는 동안 코드 덩어리가 반복됨을 알 수 있다. 그래서, 조건이 항상 참(True) 이면 무슨 일이 생길까요? 코드 덩어리는 영원히 반복되고, 프로그램은 절대로 끝나지 않아요.
이것은 좋지 않아요.
반복되는 코드 덩어리 기술을 사용하는 대신에, 프로그래머는 이것을 루프(loop) 로 기술한다: 즉, 코드 덩어리 내부 첫번째 명령어 (do_1())가 시작되고, 마지막 명령어 (do_3())에 도달할 때까지 계속된다. 그리고 나면, 루프 백(loop back) 즉, 다시 되돌아 와서 코드 덩어리 시작 바로 앞에 시험을 하고 조건이 충족되었는지 살펴본다; 만약 충족되지 않았다면, 사이클 주기를 한번더 반복한다. 만약 조건이 절대로 거짓(False) 으로 되지 않으면, 반복을 계속하고 무한 루프(infinite loop) 에 빠지게 된다.
결론: 조건이 어느 지점에서 거짓(False) 이 되는지 확실히 한다.
여러분 차례!
Hurdles 1, Hurdles 2, Hurdles 3 세상으로 되돌아 가서, repeat 을 사용하지 말고, while 문을 사용해서 3가지 세상 모두에 동작하는 단일 프로그램을 작성한다.
힌트
작성한 프로그램은 다음과 같을 것이다:
def jump_over_hurdle():
# 적절한 정의
def run_or_jump ():
# 적절한 정의
while not at_goal():
run_or_jump()
이것이다! 더이상 임의 반복은 없다! 이제부터, 해당되는 함수를 주어진 횟수만 정확하게 알고 있을 때만, repeat 함수를 사용해야 된다.