Python同心方

2024-10-01 11:22:03 发布

您现在位置:Python中文网/ 问答频道 /正文

试着用Python和乌龟做同心正方形。我的尝试是:

import turtle
def draw_square(t, size):
   for i in range(4):
       t.forward(size)
       t.left(90)
wn = turtle.Screen()
dan = turtle.Turtle()

sizevar = 1
for i in range(10):
   draw_square(dan,sizevar)
   sizevar += 20
   dan.penup()
   dan.backward(sizevar/ 2)
   dan.right(90)
   dan.forward(sizevar / 2)
   dan.left(90)
   dan.pendown()

我不知道他们为什么不同心,我的dan.backward(sizevar/2)dan.forward(sizevar/2)行似乎将正方形向下向左移动太多?在


Tags: inimportforsizerangeleftforwarddraw
2条回答

同心正方形需要使用递归算法(与迭代相反):

import turtle

def draw_square(t, size):
    for i in range(4):
        t.forward(size)
        t.left(90)

def recursive_draw(t, x, y, size):
    if (size < 200):
        t.penup()
        t.goto(x, y)
        t.pendown()
        draw_square(t, size)
        x -= 10
        y = x
        size += 20
        recursive_draw(t, x, y, size)

wn = turtle.Screen()
dan = turtle.Turtle()
recursive_draw(dan, 0, 0, 1)

用这种方式来解释代码似乎更容易:

基本情况:大小不能超过200 接近策略:增加20个大小

应该是这样的:

import turtle
def draw_square(t, size):
   for i in range(4):
       t.forward(size)
       t.left(90)
wn = turtle.Screen()
dan = turtle.Turtle()
sizevar = 1
for i in range(10):
   draw_square(dan, sizevar)
   sizevar += 20
   dan.penup()
   dan.backward(10)
   dan.right(90)
   dan.forward(10)
   dan.left(90)
   dan.pendown()

每个方块只有10个像素超出前一个。在

相关问题 更多 >