비료를 비료 창고로 옮기기
여러 프로그램에서 매번 사용자 함수를 정의하는 번거로움을 덜기 위해 라이브러리에 사용자 정의 함수 저장해 두고 불러와 사용하는 방법에 대해 알아봅니다.
여러분의 임무
리보그는 집 밖에 있는 비료 자루를 창고로 넣어야 합니다. 아직 수행하지 않은 경우 라이브러리 탭에서 turn_right()및 turn_around() 함수를 모두 정의하십시오. 이제 라이브러리에 정의된 함수를 사용하여 리보그가 비료자루를 집어 들고 창고로 돌아와 내려 놓도록 합니다. 주석과 공백을 사용하여 해결 코드의 가독성을 높이십시오!
여러분이 알아야 할 것은
- move(), turn_left(), take(), put()
- 함수를 정의하는 방법
- 라이브러리에서 import 사용하는 방법
난이도
⭐ ⭐
⭐ ⭐
시작 시 조건
로봇은 (x, y) = (6, 4)에 위치해 있고 싣고 있는 객체는 없습니다.
목표 달성 시 조건
로봇의 최종위치는 반드시 (x, y) = (6, 4)에 있어야 합니다.
여러분은 사용자 함수를 이용해서 리보그가 우회전하게 할 수 있었습니다. 이번에는 뒤돌아서는 turn_around() 함수를 만들어 봅시다.
프로그래머가 여러 프로그램에서 자주 사용하는 사용자 정의가 있다면, 매 프로그램 마다 사용자 정의를 하는 것 대신 '라이브러리' 라고 하는 특수 기능을 이용하면 매번 사용자 정의를 하는 번거로움을 덜 수 있습니다.
아래 그림에서 보이드시 '라이브러리' 탭에 자주 사용하는 'turn_right()'나 'turn_around()'를 사용자 정의 함수를 입력합니다.
그런 다음 라이브러리에 정의된 함수를 사용하려면 from library import 에 함수 이름을 입력하기 만하면 사용자 정의 함수가 불러오게 됩니다. 아래 예를 참고하세요.
많은 함수를 라이브러리에 저장하게 되면 라이브러리를 불러올 때 함수이름을 모두 적어주어야 하기 때문에 힘들 수도 있습니다. 라이브러리의 함수를 import library 만 입력하여 라이브러리만 일단 불러들입니다. 그런 후 함수를 호출 할 때 함수가 어디에서 오는지 조금 더 구체적으로 지정해야 합니다. 예를 들어 위의 코드에서는 'turn.right()'만 입력해서 함수를 불러왔다면, 이번에는 'library.turn_right()' 이렇게 함수이름 앞에 library 이름을 추가해야 합니다. 아래 예를 참고하세요.
원하는 경우 라이브러리 탭을 가져올 때 이름을 변경하여 키 입력을 절약 할 수 있습니다. 다음 예를 참고하세요.
주의
from library import *
이렇게 하면 라이브러리의 모든 함수를 가져 오지만 가져온 내용이 기존 코드와 충돌 할 수 있으므로 코드에 문제가 발생할 수 있습니다. 가끔 나타나는 이러한 현상을 네임 스페이스 오염이라고 부릅니다.
여러분의 차례
다음 링크를 클릭하여 별모양의 비료 자루를 창고 안의 지정된 장소로 가져오세요.
원문 출처: https://cs20.ca/ConstrainedLanguage/Step6.html
댓글 없음:
댓글 쓰기