Skip to main content

4과: 무한 While 루프 사용

디스크 미로 문제 해결

프로젝트 구축

  • 이전 수업의 Unit7Lesson3 프로젝트를 불러오거나 여기에 표시된 프로젝트를 다시 만들어 시작하세요.
def main():
	# 전방 눈이 녹색을 감지하면 우회전
    if front_eye.detect(GREEN):
        drivetrain.turn_for(RIGHT, 90, DEGREES)

    # 전방 눈이 파란색을 감지하면 좌회전
    if front_eye.detect(BLUE):
        drivetrain.turn_for(LEFT, 90, DEGREES)

    # 전방 눈이 빨간색을 감지하면 정지
    if front_eye.detect(RED): 
        drivetrain.stop()

    # 전방 눈이 아무것도 감지하지 못하면 전진
    if front_eye.detect(NONE): 
        drivetrain.drive(FORWARD)
  • 프로젝트 이름을 Unit7Lesson4.으로 변경하세요.프로젝트 이름 상자가 호출된 VEXcode VR 도구 모음입니다. 이 프로젝트의 이름은 7단원 4과입니다.

     

  • 프로젝트 맨 위로 무한while 루프를 끌어다 놓거나 입력한 다음 조건을 True로 설정합니다.
def main():
    while True:
    	wait(5, MSEC)
  • 무한 루프인while내부에 들어갈 명령을 위한 공간을 확보하기 위해wait명령을 이동합니다.
def main():
    while True:
    
    
    	wait(5, MSEC)
  • 무한while 루프 내부에서 이전의 if 문장을 복사하여 루프 내부에 붙여넣습니다. while 루프의 하단에 있는 wait 명령을 삭제하지 마세요. 귀하의 프로젝트는 다음과 같습니다. 이런 방식으로 명령을 복사하여 붙여넣으면 올바른 들여쓰기가 이루어지지 않습니다.
def main():
    while True:
        
    # 전방 눈이 녹색을 감지하면 우회전
    if front_eye.detect(GREEN):
        drivetrain.turn_for(RIGHT, 90, DEGREES)

    # 전방 눈이 파란색을 감지하면 좌회전
    if front_eye.detect(BLUE):
        drivetrain.turn_for(LEFT, 90, DEGREES)

    # 전방 눈이 빨간색을 감지하면 정지
    if front_eye.detect(RED): 
        drivetrain.stop()

    # 전방 눈이 아무것도 감지하지 못하면 전진
    if front_eye.detect(NONE): 
        drivetrain.drive(FORWARD)

    wait(5, MSEC)
  • VEXcode VR Python에서는 들여쓰기가 매우 중요하다는 걸 기억하세요. 프로젝트 흐름이 의도한 대로 실행되려면 if문장을 무한 루프인 while안에 들여쓰기해야 합니다. if문장을 선택하고 'Tab'을 눌러 무한 루프인while내에서 들여쓰기를 합니다. 올바르게 들여쓰기를 하면 프로젝트는 다음과 같이 보일 것입니다. 
def main():
    while True:
        
        # 전방 눈이 녹색을 감지하면 우회전
        if front_eye.detect(GREEN):
            drivetrain.turn_for(RIGHT, 90, DEGREES)

        # 전방 눈이 파란색을 감지하면 좌회전
        if front_eye.detect(BLUE):
            drivetrain.turn_for(LEFT, 90, DEGREES)

        # 전방 눈이 빨간색을 감지하면 정지
        if front_eye.detect(RED): 
            drivetrain.stop()

        # 전방 눈이 아무것도 감지하지 못하면 전진
        if front_eye.detect(NONE): 
            drivetrain.drive(FORWARD)

        wait(5, MSEC)
  • 프로젝트에 무한 while 루프가 추가되면 모든 if 명령문의 조건이 반복적으로 검사됩니다. Disk Maze Playground 을 열고 프로젝트를 실행합니다.
  • 이 프로젝트가 실행되면 VR 로봇은 처음부터 끝까지 디스크 미로 놀이터 탐색하게 됩니다. VR 로봇이 빨간색을 감지하면 운전을 멈춥니다.

    디스크 미로 놀이터에 있는 VR 로봇. VR 로봇은 놀이터 오른쪽 하단 모서리 근처의 빨간색 디스크 앞에 멈춰 있습니다.

요약해서

  • 이전 수업의 프로젝트에서 if 문의 조건은 한 번만 확인되었습니다. if 문장 내의 조건이 한 번만 검사되었기 때문에, VR 로봇은 '색상 없음'이 감지된다는 조건이 프로젝트 초기에 참으로 보고되었기 때문에 영원히 앞으로 나아갔습니다.
  • 이제 무한 while 루프가 추가되었으므로 if 문의 각 조건이 반복적으로 확인됩니다. while 루프의 조건은 항상 참이므로 while 루프 내부의 코드는 항상 실행됩니다. 이는 프로젝트가 실행되는 동안 if 문의 조건을 반복적으로 확인합니다. 
  • 프로젝트 흐름 중에 if 문의 조건이 참이면 if 문의 내부에 있는 명령이 실행됩니다. if 문의 조건이 False이면 if 문의 내부 명령은 실행되지 않고 프로젝트의 흐름은 다음 명령으로 이어집니다. 이를 통해 VR 로봇은 특정 색상을 감지하면 회전하거나 멈추는 등 개별적인 동작을 수행할 수 있습니다.
  • If 문장은 무한 while루프와 함께 사용되어 조건이 지속적으로 확인되도록 합니다.

질문

아래 링크를 선택하여 수업 퀴즈에 참여하세요.

Google 문서 / .docx / .pdf