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

我想写一个函数来绘制嵌套正方形。 图片必须包含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)

这是我的目标:

嵌套广场目标

任何帮助将非常感谢! 我对编码和Python很陌生。


在起始坐标中查看代数:

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

这减少到

xPt = center[0] - 5

...这不是你想要的,对吧?

你有什么理由为什么你在广场的中心? 除此之外,当绘制下一个较小的正方形时,您未能移动正方形的中心坐标。

每次使用左上角(而不是中心)会不会更容易,然后重复使用

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

当然,你也需要从NW的角落中抽出,但实际上这应该更容易。

这足以让你感动吗?


这是另一个程序,如果您将其视为冲压问题而不是绘图问题,则会变得更简单:

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()

它从大到小运行,否则邮票会彼此混淆:

链接地址: http://www.djcxy.com/p/80707.html

上一篇: Python Turtle: Function to draw left nested squares

下一篇: Python Recursive Turtle function that draws capital I's