如何在Python中绘制9x9网格

时间:2016-03-20 18:54:48

标签: python for-loop turtle-graphics

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

// routes/auth.js

...

app.get('/loggedInUser', function(req, res) {
    if (req.user) {
        res.status(200).json({
            user: req.user
        });
    } else {
        res.status(200).json({
            message: 'No user is logged in.'
        });
    };
});

...

有人可以帮我绘制网格吗?

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

使用乌龟绘制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()

该算法蜿蜒于水平线:

enter image description here

然后旋转90度,并对垂直线执行相同操作:

enter image description here

对线段进行了一些重绘,但将其保持在最低限度。尽管已经发布了一些算法来解决这种问题,但是N * N次循环,但这种算法仅循环2 * N即可绘制网格。

enter image description here