파이썬 turtle 모듈을 사용한 알고리즘 문제 질문 있습니다

심심해서 친구들과 파이썬으로 알고리즘 문제를 푸는데 이런 문제가 나왔습니다:


파이썬 turtle 모듈을 이용해 다음과 같은 육각형 그림을 그리려고 한다.

image

다음 빈칸 1번, 2번, 3번에 들어갈 알맞은 코드 또는 숫자를 작성하시오.

>>> import turtle
>>> t = turtle.Turtle()
>>> t.shape("turtle")
>>>
>>> def hexagon():
>>>     for i in range( 1번 ):
>>>         turtle.forward(50)
>>>         turtle.left( 2번 )

>>>     for i in range( 1번 ):
>>>         3번
>>>         turtle.forward(50)
>>>         turtle.left( 2번 )

처음에는 위의 코드 9번째 줄이 그냥 공백 잘못 넣어진 거고
[그 아래 코드는 함수에 포함되는 것] 같았습니다.

하지만 친구들 의견을 들어보니 저 공백까지가 함수고
[아래 줄은 함수에 포함되지 않는 그냥 코드] 라고 하더라고요.

그렇다고 그냥 코드라 하기에는 공백이 똑같이 들어가 있어서
아무리 봐도 함수에 포함되는 것처럼 보입니다.

친구들 의견대로 함수에 포함되지 않다고 치고 풀어봐도
1번, 2번이 공통으로 두 개의 for문 안에 들어가 문제가 풀리지 않습니다.
turtle 방향 전환 함수도 left밖에 나와있지 않아 사실상 육각형을 그리려면
사용할 수 있는 각도가 60, 120, 240, 300도로 한정되어 있는 것 같습니다.
그렇게 되면 3번에 hexagon() 함수가 호출되었을 때 방향이 전혀 바뀌지 않고
hexagon() 함수가 아닌 turtle.right() 나 다른 명령어를 사용해도
엔드게임처럼 보입니다. 가망이 없어

집에 와서 코드를 다시 작성해 봤는데도 여전히 엔드게임입니다.

import turtle as t
def hexagon():
    for fnum in range(7):
         t.forward(50)
         t.left(60)

for num1 in range(6):
     hexagon()
     t.right(120)

문제에 있는 그림처럼 나오게 직접 코드를 작성해 봤습니다만
문제에 나온 코드와는 매우 달라 보입니다.

image

파이썬 인터프리터에서도 직접 실행을 시켜 봤습니다.
잘 작동하더군요.

혹시나 해서 터미널에서 for 문을 사용할 때 문제에 나온 코드의 10번째 줄처럼
공백을 4칸 띄고 넣어봤습니다.

image

공백이 들어가면 오류가 나는 것을 보니 친구들 의견보다는 제 의견에 가까워 보입니다.
그래도 여전히 해결하지 못하고 있습니다.

저와 친구들 대부분이 문제가 잘못되었다고 생각합니다만…
답안이 어떻게 되는지, 어떤 원리인지 설명해주시면 감사하겠습니다!

! 질문의 의도를 파악할 수 없거나 논리적으로 맞지 않는 문장이 있으면 바로 수정하도록 하겠습니다 !

의문) 이 부분은 왜 사용한 걸까요? 걍 import turtle as t 하지…

생성자가 아닌지요? 제가 저 라이브러리를 써본 적이 없는데… 혹시 본문에 사용된 메소드들이 인스턴스 생성 없이도 써먹을 수 있는 건가요?

1 Like

생성자 맞고요, 인스턴트 생성 없이 그냥

import turtle
turtle.shape('classic')

이렇게 써도 작동 됩니다.

↑ 이거는 이미 t = turtle.Turtle() 로 축약했으니 그냥
t.forward(50) 라고 작성해도 될 것을 굳이 turtle.forward(50) 로 길게 작성하는 거 보고
조금 답답해서 한 헛소리입니다. 나만 그런가

1 Like

어 진짜 그렇네요
스크롤 내리면서 분명히 다 봤을텐데 제 머릿속의 지우개가 또…

1 Like