어떻게 거북이로 예쁜 도안을 그릴까

15943 단어 pythontutorial
지난주에 글을 올리는 것을 잊어버렸지만, 우리는 시작했다.파이썬을 사용하기로 했어요.🐍 내 기술을 늘려줘.주로 백엔드(Flask, Django)이지만 향후 확장될 수 있습니다.나는/u/TravisJungroth가 reddit에서 발표한 guide에 주목하고 있다.나는 현재 Runestone Interactivethinkcspy과정을 공부하고 있다.

NOTE: You should be familiar with Python basics such as variables, for loop, and functions. Also, the Turtle library.


이것은 우리가 만들 모델입니다.

처음에는 이런 패턴이 복잡해 보였지만, 만약 우리가 그것을 작은 덩어리로 분해한다면, 그것은 관리할 수 있을 것이다.모양을 찾으면 떡 그림 하나를 볼 수 있다.

만약 우리가 더욱 관찰한다면 정사각형을 발견할 수 있을 것이다.

네 개의 정사각형으로 이루어진 격자를 보았습니다.

작은 일부터 시작합시다. 노력하는 것이 문제를 해결하는 방법입니다.우선,turtle 라이브러리를 가져오고 캔버스를 설정합니다.
import turtle

tess = turtle.Turtle()
wn = turtle.Screen()

tess.speed(10)
tess.pensize(2)
tess.color('blue')
wn.bgcolor('lightgreen')
모든 줄을 검사합시다.
import turtle
거북이 창고로 가져옵니다.
tess = turtle.Turtle()
이것은 tess 우리의 거북이 대상을 만들 것입니다.
wn = turtle.Screen()
wn은 그림을 그릴 화면 대상을 만듭니다.
tess.speed(10)
그러면 펜 그리기 속도가 조정됩니다.1 느리다, 10 빠르다.
tess.pensize(2)
그러면 그리는 선의 크기가 조정됩니다.
tess.color('blue')
그러면 펜 색상이 파란색으로 설정됩니다.
wn.bgcolor('lightgreen')
그러면 캔버스 배경색이 연두색으로 설정됩니다.
현재 모든 설정 코드가 완성되었으니, 우리가 이 문제를 해결합시다.drawSquare 함수를 만드는 것부터 시작합시다.
def drawSquare(t, sz):
    for i in range(4):
        t.fd(sz)
        t.left(90)
한 줄씩 살펴보겠습니다.
def drawSquare(t, sz):
이것은 두 개의 매개 변수를 받아들이는 drawSquare 함수를 성명했다.t은 거북이의 대상을 나타내고, sz은 정사각형 변의 길이를 나타낸다.
for i in range(4):
우리는 for 순환을 만들었는데, 이 순환은 네 번 교체되었다. 0, 1, 2, 3.
    t.fd(sz)
그러면 거북이 개체가 sz개 단위로 앞으로 이동합니다.
   t.left(90)
이것은 거북이를 90도 회전시켰다.
함수를 호출해 보겠습니다.
drawSquare(tess, 100) 
우리는 두 개의 매개 변수를 사용하여 drawSquare:tess을turtle 대상으로, 100을 크기로 호출합니다.우리는 다음과 같은 결과를 얻어야 한다.

이제 우리는 drawSquare의 작업 원리를 알게 되었고, 우리는 격자를 만들기 시작할 수 있다.기억해야 할 것.초등학교로 돌아와서 나는 나침반으로 독특한 형상이나 동그라미를 그렸다.그 밖에 나는 나침반을 가운데에 놓아 모양을 그릴 것이다.이 지식들은 앞으로 우리에게 도움이 될 것이다.drawGrid 함수를 구축합시다.
def drawGrid(t, sz):
    for i in range(4):
        drawSquare(t, sz)
        t.left(90)
def drawGrid(t, sz):
우리는 두 개의 매개 변수의 drawGrid 함수를 채택한다고 성명한다.t은 거북이의 대상이고 sz은 격자 속의 정사각형 가장자리가 긴 크기이다.
for i in range(4):
마찬가지로, 우리는 for 순환을 만들었고, 네 번 순환: 0, 1, 2, 3.이것은 격자 중의 네 개의 정사각형을 설명한다.
    drawSquare(t, sz)
이것은 두 개의 매개 변수를 사용하여 drawSquare 함수를 호출할 것이다.t은 거북이 대상이고 sz은 정사각형의 크기이다.
t.left(90)
이것은 거북이를 90도로 좌회전시킬 것이다.
현재 우리의 drawGrid 함수는 이미 완성되었으니 테스트를 해 봅시다.
drawGrid(tess, 100)
이것은 두 개의 매개 변수를 사용하여 drawGrid을 호출할 것이다.tess은 거북이 대상이고 100은 제곱 길이의 크기이다.
우리는 다음과 같은 결과를 얻어야 한다.

NOTE: Arguments and parameter have different meaning. Arguments is data passed to function and parameters are what the function accepts.


거북이가 지금 어디에 있는지 주의해라.위치(0,0)입니다.이것은 정사각형과 격자를 그리는 원점이다.이것은 필요한 것이다. 이렇게 하면 격자를 회전할 때 격자가 비뚤어지지 않을 것이다. 우리는 뒤에서 볼 것이다.
우리는 거의 완성했다.이제 우리는 원에서 케이크 슬라이스를 만들어야 한다.일찍이 우리가 만들고 있는 예쁜 도안을 보면 다음과 같은 것들을 발견할 수 있다.

이것은 가볍게 회전하는 격자 더미다.또 다른 관찰 결과는 격자의 각 정사각형에 다섯 개의 케이크 슬라이스가 있다는 것이다.다음과 같이 요약해 보겠습니다.
def main():
    for i in range(5):
        drawGrid(tess, 100)
        tess.left(18)

main()
한 줄씩
def main():
우리는 코드를 저장하기 위해 main 함수를 성명했다.이것은 필수적인 것이 아니지만, 코드를 질서정연하게 유지한다.
 for i in range(5):
그 파이 다섯 조각 기억나?네, 우리는 여러 번 교체했습니다. 이것은 다섯 개의 격자를 만들었습니다.이 for의 순환은 다섯 번 반복된다. 0, 1, 2, 3, 4.
drawGrid(tess, 100)
우리는 두 개의 매개 변수로 drawGrid을 호출한다.tess은 거북이의 대상이고 100은 정사각형의 가장자리로 길다.
tess.left(18)
격자를 그린 후, 우리는 18도로 좌회전했다.너는 18이라는 숫자가 어디에서 왔는지 생각할 수 있다.각 정사각형을 그리면 90도 회전한다는 것을 기억하십시오.우리는 다섯 개의 격자를 그렸기 때문에, 각 격자를 그린 후에, 우리는 그것을 나누어 모서리를 얻는다.90 // 5 = 18 .
최종 코드:
# pretty-picture.py
import turtle

tess = turtle.Turtle()
wn = turtle.Screen()

tess.speed(10)
tess.pensize(2)
tess.color('blue')
wn.bgcolor('lightgreen')

def drawSquare(t, sz):
    for i in range(4):
        t.fd(sz)
        t.left(90)

def drawGrid(t, sz):
    for i in range(4):
        drawSquare(t, sz)
        t.left(90)

def main():
    for i in range(5):
        drawGrid(tess, 100)
        tess.left(18)

main()
우리는 그것을 더욱 개선하고turtle 설정 코드를 main 함수로 옮길 수 있습니다.나는 이 강좌가 네가 문제를 해결하는 데 도움을 줄 수 있기를 바란다.이 문제는 처음에는 어려워 보였지만 작은 덩어리로 바꾸면 복잡성을 줄일 수 있다.자세한 내용은 다음 리소스를 참조하십시오.
기타 리소스
Turtle Library Documentation
Runestone Interactive
픽사의 에바 무스키(Iva Muškić) 재킷 사진

좋은 웹페이지 즐겨찾기