Python 中的同心正方形与海龟
Concentric Squares in Python with Turtle
尝试用 Turtle 在 python 中制作同心正方形。这是我的尝试:
import turtle
def draw_square(t, size):
for i in range(4):
t.forward(size)
t.left(90)
wn = turtle.Screen()
dan = turtle.Turtle()
sizevar = 1
for i in range(10):
draw_square(dan,sizevar)
sizevar += 20
dan.penup()
dan.backward(sizevar/ 2)
dan.right(90)
dan.forward(sizevar / 2)
dan.left(90)
dan.pendown()
我不确定为什么它们不是同心的,我的 dan.backward(sizevar/2)
和
dan.forward(sizevar/2)
线条似乎将正方形向下和向左移动太多?
应该是这样的:
import turtle
def draw_square(t, size):
for i in range(4):
t.forward(size)
t.left(90)
wn = turtle.Screen()
dan = turtle.Turtle()
sizevar = 1
for i in range(10):
draw_square(dan, sizevar)
sizevar += 20
dan.penup()
dan.backward(10)
dan.right(90)
dan.forward(10)
dan.left(90)
dan.pendown()
每个方块只比前一个方块多 10 个像素。
同心正方形需要用递归算法(而不是迭代)来完成:
import turtle
def draw_square(t, size):
for i in range(4):
t.forward(size)
t.left(90)
def recursive_draw(t, x, y, size):
if (size < 200):
t.penup()
t.goto(x, y)
t.pendown()
draw_square(t, size)
x -= 10
y = x
size += 20
recursive_draw(t, x, y, size)
wn = turtle.Screen()
dan = turtle.Turtle()
recursive_draw(dan, 0, 0, 1)
这样推理代码似乎更容易:
基本案例:尺寸不得超过 200
接近策略:增加尺寸20
尝试用 Turtle 在 python 中制作同心正方形。这是我的尝试:
import turtle
def draw_square(t, size):
for i in range(4):
t.forward(size)
t.left(90)
wn = turtle.Screen()
dan = turtle.Turtle()
sizevar = 1
for i in range(10):
draw_square(dan,sizevar)
sizevar += 20
dan.penup()
dan.backward(sizevar/ 2)
dan.right(90)
dan.forward(sizevar / 2)
dan.left(90)
dan.pendown()
我不确定为什么它们不是同心的,我的 dan.backward(sizevar/2)
和
dan.forward(sizevar/2)
线条似乎将正方形向下和向左移动太多?
应该是这样的:
import turtle
def draw_square(t, size):
for i in range(4):
t.forward(size)
t.left(90)
wn = turtle.Screen()
dan = turtle.Turtle()
sizevar = 1
for i in range(10):
draw_square(dan, sizevar)
sizevar += 20
dan.penup()
dan.backward(10)
dan.right(90)
dan.forward(10)
dan.left(90)
dan.pendown()
每个方块只比前一个方块多 10 个像素。
同心正方形需要用递归算法(而不是迭代)来完成:
import turtle
def draw_square(t, size):
for i in range(4):
t.forward(size)
t.left(90)
def recursive_draw(t, x, y, size):
if (size < 200):
t.penup()
t.goto(x, y)
t.pendown()
draw_square(t, size)
x -= 10
y = x
size += 20
recursive_draw(t, x, y, size)
wn = turtle.Screen()
dan = turtle.Turtle()
recursive_draw(dan, 0, 0, 1)
这样推理代码似乎更容易:
基本案例:尺寸不得超过 200 接近策略:增加尺寸20