如何在 Python 中绘制 9x9 网格

How to draw a 9x9 grid in Python

我正在尝试使用海龟图形在 python 中绘制一个 9x9 网格。我知道我需要使用两个 for 循环,一个用于垂直线,一个用于水平线。但是,我唯一能得到的是屏幕上的一个大方块。当我尝试画线时,出现错误。这是我目前的程序:

def main():

    import turtle
    x=turtle.Turtle()
    x.penup()
    x.goto(-300,300)
    x.pendown()
    for i in range(4):
        x.forward(600)
        x.right(90)

main()

谁能帮我画一下网格?

import turtle


def main():
    x = turtle.Turtle()
    x.penup()
    x.goto(-150, -150)
    x.pendown()
    x.left(90)
    for i in xrange(2):
        for j in xrange(4):
            x.right(90)
            x.pendown()
            x.forward(300)
            x.right(180)
            x.forward(300)
            x.right(90)
            x.penup()
            x.forward(100)
        x.backward(100)
        x.right(90)

main()

使用 turtle 绘制 N x N 网格的问题经常出现,解决方案通常是特定于大小的,或者效率低下。让我们用一个处理 N x N 网格的简单网格绘图例程来解决这两个问题:

from turtle import Screen, Turtle

N = 9  # N by N grid
LENGTH = 30  # each grid element will be LENGTH x LENGTH pixels

def grid(turtle, n, length):
    sign = 1
    for _ in range(2):

        for _ in range(n):
            turtle.forward(length * n)
            turtle.left(sign * 90)
            turtle.forward(length)
            turtle.left(sign * 90)
            sign = 0 - sign

        turtle.forward(length * n)
        [turtle.right, turtle.left][n % 2](90)
        sign = 0 - sign

screen = Screen()
yertle = Turtle()

yertle.penup()
yertle.goto(-N * LENGTH/2, -N * LENGTH/2)  # center our grid (optional)
yertle.pendown()

grid(yertle, N, LENGTH)

screen.exitonclick()

算法使水平线呈蛇形:

然后转90度,对垂直线做同样的事情:

重新绘制了一些线段,但已保持在最低限度。虽然有些算法解决这类问题循环N * N次,但这个只循环2 * N来绘制网格。