如何在 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来绘制网格。
我正在尝试使用海龟图形在 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来绘制网格。