Reeborg (13) python (13) Scratch (8) Minecraft (4) TED (1) etc. (1) lua (1) science (1)

2022년 5월 25일 수요일

정원사 로봇 리보그(초급) - 5. 맛있는 딸기 수확

맛있는 딸기 수확

딸기 수확 문제를 해결하며 반복되는 긴 코드를 짧은 사용자 함수로 정의하는 방법을 알아봅니다.

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


여러분의 임무

리보그는 정원에서 딸기를 따려고합니다. 보시다시피 리보그의 정원은 매우 복잡한 모양입니다. 딸기 두 개를 집어 땅에 놓는 함수 ' pick_two_berries() '를 정의합니다.
문제 해결을 위해 4번 반복을 사용하십시오. 주석과 공백을 사용하여 해결 코드의 가독성을 높이십시오!

여러분이 알아야 할 것은

  • move(), turn_left(), take(), put()
  • 함수를 정의하는 방법.

난이도

  • ⭐ ⭐ ⭐

조건

        로봇은 (x, y) = (5, 1)에 위치해 있고 싣고 있는 물건은 없습니다.

목표 달성

        로봇의 최종위치는 반드시 (x, y) = (5, 7) 이어야 합니다.

 

  앞의 문제를 해결해가면서 리보그가 연속으로 세 번의 좌회전을 하면 한 번의 우회전을 하는 것과 동일한 결과가 나온다는 것을 알게 되었습니다. 리보그가 우회전 할 때마다 세 번의 turn_left()를 작성하는 일은 꽤 지루한 일이었습니다. 그냥 turn_right() 명령 한 번으로 해결할 수 있다면 더 좋지 않을까요 ?

def some_well_chosen_name():
    # some lines of code
    # indented at the same level

def 는 우리가 만나게 된 첫 번째 파이썬 키워드 입니다. 이 def 는 프로그래밍 언어에서 특별한 의미가 있는 단어입니다. 콜론( : )이라고 하는 부분 앞에 오며 그 아래 들여 쓰기 부분이 함수의 본문 입니다. Python에서는 각 줄의 시작 부분에 동일한 수의 공백을 사용하여 코드 블록을 들여 쓰는 것이 필요합니다. 이는 사람이 함수 본문을 쉽게 읽어 쉽게 식별할 수 있도록 합니다.

첫 번째 Python 함수를 작성해 보겠습니다.

def turn_right():
    turn_left()
    turn_left()
    turn_left()

이게 전부입니다. 이제 우회전을 하기 위해 세 개의 turn_left() 함수를 연속으로 작성하지 않아도 됩니다!


def 를 어떻게 다뤄야 하나?

   방금 파이썬에서 함수를 정의하는 방법을 보았습니다. 함수가 어떻게 작동하는 지 파이썬 구조를 이해하는 데 도움이 될 더 자세한 설명이 있습니다.

다음이 있다고 가정합니다.

 def turn_right():  # begin of code block follows
     turn_left()
     turn_left()
     turn_left()   # end of code block

 move()
 turn_right()
 move()

이것은 다음과 동일합니다.

 # define a function
 def turn_right():
     turn_left()
     turn_left()
     turn_left()

 move()
 # begin of code block inside turn_right()
 turn_left()
 turn_left()
 turn_left()
 # end of code block
 move()

즉, def 는 우리가 def에서 정의한 이름을 본문 코드에서 사용할 때마다 def 코드 블록 안에 기록해 놓은 코드들이 실행되고 있습니다. 마치 def 블록 안에 있는 코드들을 그대로 사용하는 것과 같습니다.


여러분의 차례

다음의 링크를 열어 문제를 해결해 봅니다.

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


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

댓글 없음:

댓글 쓰기