2022년 6월 24일 금요일

정원사 로봇 리보그(초급) - 6. 비료를 비료 창고로 옮기기

 비료를 비료 창고로 옮기기

  여러 프로그램에서 매번 사용자 함수를 정의하는 번거로움을 덜기 위해 라이브러리에 사용자 정의 함수 저장해 두고 불러와 사용하는 방법에 대해 알아봅니다.

코드작성: http://reeborg.ca/reeborg.html?lang=ko-en&mode=python&menu=worlds%2Fmenus%2Fsk_menu_ko.json&name=6%20%EB%8B%A8%EA%B3%84&url=worlds%2Fsk_ko%2Fstep6.json


여러분의 임무

  리보그는 집 밖에 있는 비료 자루를 창고로 넣어야 합니다. 아직 수행하지 않은 경우 라이브러리 탭에서 turn_right()turn_around() 함수를 모두 정의하십시오. 이제 라이브러리에 정의된 함수를 사용하여 리보그가 비료자루를 집어 들고 창고로 돌아와 내려 놓도록 합니다. 주석과 공백을 사용하여 해결 코드의 가독성을 높이십시오!

여러분이 알아야 할 것은

  • move(), turn_left(), take(), put()
  • 함수를 정의하는 방법
  • 라이브러리에서 import 사용하는 방법

난이도

  • ⭐ ⭐

시작 시 조건

        로봇은 (x, y) = (6, 4)에 위치해 있고 싣고 있는 객체는 없습니다.

목표 달성 시 조건

        로봇의 최종위치는 반드시 (x, y) = (6, 4)에 있어야 합니다.

 

여러분은 사용자 함수를 이용해서 리보그가 우회전하게 할 수 있었습니다. 이번에는 뒤돌아서는 turn_around() 함수를 만들어 봅시다. 

def turn_around():
    turn_left()
    turn_left()

  프로그래머가 여러 프로그램에서 자주 사용하는 사용자 정의가 있다면, 매 프로그램 마다 사용자 정의를 하는 것 대신 '라이브러리' 라고 하는 특수 기능을 이용하면 매번 사용자 정의를 하는 번거로움을 덜 수 있습니다.

아래 그림에서 보이드시 '라이브러리' 탭에 자주 사용하는 'turn_right()'나 'turn_around()'를 사용자 정의 함수를 입력합니다.

그런 다음 라이브러리에 정의된 함수를 사용하려면 from library import 에 함수 이름을 입력하기 만하면 사용자 정의 함수가 불러오게 됩니다. 아래 예를 참고하세요.

# import functions from the library tab
from library import turn_right, turn_around

# when you want to use the functions
turn_right()
turn_around()

 

많은 함수를 라이브러리에 저장하게 되면 라이브러리를 불러올 때 함수이름을 모두 적어주어야 하기 때문에 힘들 수도 있습니다. 라이브러리의 함수를 import library 만 입력하여 라이브러리만 일단 불러들입니다. 그런 후 함수를 호출 할 때 함수가 어디에서 오는지 조금 더 구체적으로 지정해야 합니다. 예를 들어 위의 코드에서는 'turn.right()'만 입력해서 함수를 불러왔다면, 이번에는 'library.turn_right()' 이렇게 함수이름 앞에 library 이름을 추가해야 합니다. 아래 예를 참고하세요.

# import functions from the library tab
import library

# when you want to use the function
library.turn_right()
library.turn_around()

원하는 경우 라이브러리 탭을 가져올 때 이름을 변경하여 키 입력을 절약 할 수 있습니다. 다음 예를 참고하세요.

# import functions from the library tab
import library as lib

# when you want to use the function
lib.turn_right()
lib.turn_around()

 

주의 

from library import * 이렇게 하면 라이브러리의 모든 함수를 가져 오지만 가져온 내용이 기존 코드와 충돌 할 수 있으므로 코드에 문제가 발생할 수 있습니다. 가끔 나타나는 이러한 현상을 네임 스페이스 오염이라고 부릅니다.

 

 

여러분의 차례

다음 링크를 클릭하여 별모양의 비료 자루를 창고 안의 지정된 장소로 가져오세요.

코드작성: http://reeborg.ca/reeborg.html?lang=ko-en&mode=python&menu=worlds%2Fmenus%2Fsk_menu_ko.json&name=6%20%EB%8B%A8%EA%B3%84&url=worlds%2Fsk_ko%2Fstep6.json

 

원문 출처: https://cs20.ca/ConstrainedLanguage/Step6.html

 

 

댓글 없음:

댓글 쓰기