pythonturtle:绘制左嵌套正方形的函数

2024-04-27 19:15:33 发布

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

我试图写一个函数来画嵌套的正方形。这幅画必须由10个正方形组成。最外面的宽200,里面的每个小20。他们分别在左边和前5名。它需要从reset()和hideturtle()开始并使用循环。我在设置每个方块的绘图位置时遇到了麻烦,因为海龟需要向右移动5个像素,每个方块向下移动5个像素。函数应该返回一个像下面这样的图像。到目前为止,我得到的是:

def ForTheSquares(t, center, side):
    xPt =center[0]+(side-(side-5)) 
    yPt = center[0]-(side-(side-5))
    t.up()
    t.goto(xPt, yPt)
    t.down
    for i in range(4):
        t.forward(side)
        t.right(90)


def NestSquares(t, center, side):
    if side <1:
        return
    ForTheSquares(t, center, side)
    NestSquares(t, center, side-20)


def main():
    t=turtle.Turtle()
    NestSquares(t, [0,0], 200)

这是我的目标:

Nested Squares Goal

任何帮助都将不胜感激!我不熟悉编码和Python。在


Tags: 函数绘图def像素side方块centerreset
2条回答

看看你的坐标系中的代数:

xPt =center[0]+(side-(side-5)) 

这就减少到

^{pr2}$

。。。这不是你想要的,对吧?在

你为什么要在广场的中心打键?除此之外,在绘制下一个较小的正方形时,无法移动正方形的中心坐标。在

每次使用左上角(不是中间),然后用

ForTheSquares(t, old_corner, side)
new_corner = (old_corner[0]+5, old_corner[1]+5)
NestSquares(t, new_corner, side-20)

当然,你也需要从西北角画画,但那应该更容易些。在

这足以让你动起来吗?在

如果您认为这是一个冲压问题而不是绘图问题,这是另一个简单得多的程序:

import turtle

turtle.reset()  # not necessary but a stated requirement
turtle.hideturtle()

turtle.shape("square")
turtle.fillcolor("white")

for side in range(200, 0, -20):
    turtle.shapesize(side / 20)
    turtle.stamp()
    x, y = turtle.position()
    turtle.setposition(x - 5, y + 5)

turtle.exitonclick()

它从大到小,否则邮票会互相遮掩:

enter image description here

相关问题 更多 >