我怎么画一堆正方形?

eMR*_*MRe 1 python turtle-graphics

我是python的新手.我需要为大学绘制这个形状,但我发现它真的很难,所以我想在进入那个图像之前做正方形.

无论如何这里是我的问题:我怎么能有8行?(1行中有8个方格)我不能继续添加def start_point1():这不是正确的方法.

在此输入图像描述

#!/usr/bin/python

import turtle as t
import time

def start_point():
    t.penup()
    t.setpos(-200,-240)
    t.pendown()

def start_point1():
    t.penup()
    t.setpos(-200,-180)
    t.pendown()

def draw_turtle():
    for a in range(4):
        t.forward(60)
        t.left(90)

def draw_turtlerow():
    for a in range(8):
        draw_turtle()
        t.forward(60)



def main():
    start_point()
    draw_turtlerow()
    start_point1()
    draw_turtlerow()
Run Code Online (Sandbox Code Playgroud)

mac*_*mac 8

在这类问题中,你应该问自己什么是"原子"操作 - 反复重复 - 将产生你的完整解决方案.你已经找到了你的基本"原子":绘制正方形的一面:

t.forward(60)
Run Code Online (Sandbox Code Playgroud)

现在,"原子性"的下一个级别是什么?好吧,重复四次,你可以得到一个正方形(正如你自己发现的那样)

for a in range(4):
    t.forward(60)
    t.left(90)
Run Code Online (Sandbox Code Playgroud)

现在沿着同样的路线,你可能会得出这样的结论:如果你重复上述8次,你得到一条线,如果你重复8次线,你将获得一个完整的检查板.它应该是这样的:

for col in range(8):
    for row in range(8):
        # draw a square here
Run Code Online (Sandbox Code Playgroud)

现在,您已经自己编写了绘制正方形的函数,唯一的问题是您需要在不同的位置绘制每个正方形.你要在这里集中的关键点是:你能想到计算这个位置,距离的值开始的方法colrow

如果你遇到困难,我在这里发布了一个示例实现,我相信你不需要检查它,但如果你这样做,这里是额外的任务:而不是按原样使用该代码,转动内圈调用单独的函数draw_square(row, col).

编辑:为了获得额外的积分和自豪感,一旦完成练习,观察检查板中的大多数线是如何反复重绘的.只需很少的努力,您就可以将程序的效率提高一倍.你能想到怎么样?

HTH!