레슨 2: While 루프 사용
이번 수업에서는 범퍼 센서와 while루프를 사용하여 프로젝트를 만들어 보겠습니다. 미니 챌린지에서는 이러한 기술을 적용하여 벽 미로의 시작 부분부터 'A' 문자까지 탐색하게 됩니다.

학습 성과
- 대기하지 않는 명령은 명령의 동작이 아직 완료되지 않았더라도 프로젝트를 계속 진행한다는 것을 확인합니다.
- 프로젝트를 계속 진행하기 전에 대기 명령이 동작을 완료하는지 확인합니다.
- while루프는 부울 조건을 반복적으로 확인하고, 조건이 True로 보고될 때까지 다음 명령으로 넘어가지 않는다는 것을 확인합니다.
- 대기하지 않는 명령(예: 드라이브)과 함께 while루프를 사용하여 센서 상태를 확인하는 것을 확인합니다.
- not키워드는 부울 조건의 값을 True에서 False로, False에서 True로 반전시킨다는 것을 알아보세요.
- left_bumper.pressed및 right_bumper.pressed명령은 while루프에서 True 또는 False 값을 반환한다는 것을 확인합니다.
- 범퍼 센서가 눌릴 때까지 VR 로봇이 앞으로 주행하는 프로젝트를 만드는 방법을 설명하세요.
While 루프
while 루프는 부울 조건을 허용합니다. While루프는 부울 조건을 반복적으로 확인하고 프로젝트 흐름을 제어합니다. while루프는 조건이& True인 동안 계속 반복됩니다. while 루프는 조건이 False로 보고되면 루프를 종료하고 루프 외부의 다음 명령으로 이동합니다.

기본적으로while루프는 VR 로봇에게 특정 조건충족되는 동안동작을 계속하라고 지시하는 것입니다. 논리는 이 시나리오와 비슷합니다.해빛나는 동안, 밖에서 놀러 가세요.당신이라면 어떻게 하시겠습니까? "태양이 빛나고 있다"는 조건은 당신이 어디에 있어야 하는지를 결정합니다. 태양이 빛날 때는 조건이 참이므로 밖으로 나가서 놀 수 있습니다. 해가 지면 그 조건은 False이므로 안으로 다시 들어와야 합니다.

While 루프와 벽 미로 문제
같은 논리가 벽 미로의 VR 로봇에도 적용됩니다. 범퍼 센서눌려 있지 않은 동안 VR 로봇계속 앞으로 주행해야 합니다. 누르면 멈추거나 회전해야 합니다. while루프를 drive, 과 같은 대기하지 않는 명령과 함께 사용하면 VR 로봇이 바로 그 작업을 수행하도록 코딩할 수 있습니다. 그러나 범퍼 센서 명령은 범퍼 센서가 눌려 있는 조건(left_bumper.pressed또는 )을합니다. 범퍼 센서가 눌려 있는 동안 VR 로봇이 구동되도록 코딩하려면아닌사용해야 합니다.
def main():
while not 조건:
wait (5, MSEC)귀하의 정보를 위해
대기하지 않는 명령과 대기하는 명령은 다음 명령이 동작을 시작하는 시점을 결정합니다. drive_for및 turn_for과 같은 대기 명령은 프로젝트의 다음 명령으로 넘어가기 전에 동작을 완료합니다. 드라이브및 회전과 같은 대기하지 않는 명령은 대기하지 않는 명령의 동작이 완료되지 않았더라도 프로젝트의 다음 명령으로 계속 이동합니다.
대기 명령
drivetrain.drive_for(전진, 200, MM)
drivetrain.turn_for(우회전, 90, 도)대기하지 않는 명령
구동계.구동(전진)
구동계.회전(우회전)Not 키워드
not키워드는 일반적으로while루프와 함께 사용되어 조건이 False를 반환하는 동안 루프 내부의 명령을 실행합니다. '태양이 빛나고 있다'라는 예를 사용하려면이 아닌연산자를 사용하여 동일한 효과를 얻을 수 있습니다. 태양있을 때 안으로 들어오세요.

벽 미로에서는 범퍼 센서가이 아닌으로 눌려 있는 동안 VR 로봇이 앞으로 주행하도록 코딩하는 데 유용합니다. 조건은 여전히 '범퍼 센서가 눌렸을 경우'이지만, 이렇게 하면 False(눌리지 않음)를 보고할 때 프로젝트 흐름이 루프에 유지됩니다. 범퍼 센서를 누르면 조건이 True가 되어 프로젝트가 루프에서 빠져나갑니다.
귀하의 정보를 위해
not 키워드는 부울 값을 반전하는 논리 연산자입니다. 값을 반환하는 명령 앞에 키워드넣으면 True가 False로, False가 True로 반전됩니다. 예를 들어, VR 로봇의 왼쪽 범퍼 센서가 눌렸고 left_bumper.pressed명령이 True를 반환한다고 가정해 보겠습니다. not키워드는 부울 값을 반전시키고 이 표현식이 False를 반환하도록 합니다.
left_bumper.pressed()가 아닙니다사용하는 센서 데이터에 따라 VR 로봇이 원하는 동작을 실행하려면가 아닌키워드가 필요할 수 있습니다.
def main():
while not left_bumper.pressed():
drivetrain.drive(FORWARD)
wait(5, MSEC)
drivetrain.stop()While 루프와 범퍼 센서를 사용하여 프로젝트 빌드
프로젝트 이름 지정 및 저장
- 새 텍스트 프로젝트를 열고 메시지가 표시되면Wall Maze Playground선택합니다.

-
프로젝트 이름을 Unit4Lesson2로 지정하세요.

-
Drivetrain 명령을 대체하려면 while명령을 작업 공간으로 끌어다 놓거나 입력하세요. 이 명령은 새 텍스트 프로젝트의 일부로 자동으로 채워집니다. 루프 내부에 wait 명령이 있다는 점에 유의하세요. wait명령을 제거하지 마세요. VR 로봇이 프로젝트를 올바르게 실행하도록 보장합니다. 프로젝트는 다음과 같아야 합니다.
def main(): while 조건: wait(5, MSEC) -
while명령에서 'while' 뒤에이 아닌연산자를 입력하세요. 이제 프로젝트는 다음과 같이 보일 것입니다.
def main(): while not 조건: wait(5, MSEC) -
while 루프의 '조건'에서 left_bumper.pressed명령을 드래그하거나 입력합니다. 루프 내부의 명령은 조건이 참이 아닐 때, 즉 좌측 범퍼 센서가이 아닌일 때 실행됩니다. 이제 프로젝트는 다음과 같이 보일 것입니다.
def main(): while not left_bumper.pressed(): wait(5, MSEC) -
while루프 내부에서 drive 명령을 드래그하거나 입력합니다. drive명령과wait명령이while루프 내에서 올바르게 들여쓰기되어 루프가 의도한 대로 실행되도록 하세요. 안내선을 시각적 보조 자료로 사용할 수 있습니다. 이제 프로젝트는 다음과 같이 보일 것입니다.
def main(): while not left_bumper.pressed(): drivetrain.drive(FORWARD) wait(5, MSEC) -
while루프 밖으로 stop 명령을 드래그하거나 입력합니다. stop명령이while루프에 맞춰져 있고 들여쓰기가 되어 있지 않은지 확인하여 의도한 대로 루프 외부에서 실행되도록 합니다. 안내선을 시각적 보조 자료로 사용할 수 있습니다. 이제 프로젝트는 다음과 같이 보일 것입니다.
def main(): while not left_bumper.pressed(): drivetrain.drive(FORWARD) wait(5, MSEC) drivetrain.stop() - 놀이터 창이 아직 열려 있지 않으면 엽니다. 벽 미로 놀이터이 열리는지 확인하세요.
- 프로젝트를 실행합니다.
- VR 로봇이 벽 미로의 시작 부분에서 주행하다가 범퍼 센서가 벽에 닿으면 멈추는 모습을 지켜보세요.
- 주행 명령을 사용하면 VR 로봇이 좌측 범퍼 눌림 명령으로 범퍼 센서의 상태를 확인하면서 계속 전진할 수 있습니다. left_bumper.pressed명령이 True로 보고되면 VR 로봇은 루프 외부의 다음 명령으로 이동하고 운전을 멈춥니다.
이 강의의 나머지 부분을 계속하려면 다음 버튼을 선택하세요.