我想使用类似于以下的turtle函数在Python中绘制三个重叠的正方形: [1]:https://i.stack.imgur.com/lhfq2.png
到目前为止,这是我的代码
from turtle import *
# Set up canvas
setup()
title('three (3) squares of different colours')
speed('fastest')
pensize(4)
# Draw the outline of square
penup ()
goto (0,0)
pendown ()
color ('black')
for number in range (4):
forward(150)
left(90)
penup()
# Fill square with colour
goto (0,0)
color('black', 'yellow')
pendown()
begin_fill()
for number in range (4):
forward(150)
left(90)
end_fill()
hideturtle ()
done ()
答案 0 :(得分:1)
您没有绘制三个正方形,而是绘制了相同的正方形两次-一次填充,一次不绘制。您应该能够使用一系列简单的forward()
,right(90)
和left(90)
命令来绘制此图。以及颜色更改和填充请求。
我认为处理该问题的有趣方法是,考虑红色和绿色正方形的大小相同,因此我们应该能够仅使用不同的填充颜色来重用相同的代码。第二个挑战是,在最初将笔最佳地放置在窗口中之后,要绘制图形而不会再次抬起笔。这类似于抬起铅笔在纸上绘制该图形。
from turtle import *
LENGTH = 415
OUTLINE = 10
title('Three (3) squares of different colours')
pensize(OUTLINE)
penup()
goto(-LENGTH/4, LENGTH/4) # center drawing on the window
pendown()
fillcolor('lime')
for _ in range(2):
begin_fill()
forward(LENGTH/2)
right(90)
for _ in range(3):
forward(LENGTH)
right(90)
forward(LENGTH/2)
end_fill()
fillcolor('red')
left(90)
left(90)
fillcolor('yellow')
begin_fill()
for _ in range(4):
forward(LENGTH/2)
left(90)
end_fill()
hideturtle()
exitonclick()
只是一些想法。还有其他有趣的方法可以处理此绘图。例如,我们可以使用 stamping :
代替 drawingfrom turtle import *
LENGTH = 415
OUTLINE = 10
CURSOR_SIZE = 20
title('Three (3) squares of different colours')
penup()
shape('square')
shapesize(LENGTH / CURSOR_SIZE, outline=OUTLINE)
goto(LENGTH/4, LENGTH/4)
fillcolor('red')
stamp()
goto(-LENGTH/4, -LENGTH/4)
fillcolor('lime')
stamp()
shapesize(LENGTH / 2 / CURSOR_SIZE)
home()
fillcolor('yellow')
stamp()
hideturtle()
exitonclick()