用矩形画圆 python 乌龟

Draw a circle with rectangles python turtle

我想绘制(这个形状)多边形,知道矩形的长度和宽度,以及矩形的数量,

这是我的代码:

from turtle import *

color('black')
begin_fill()
length = 50
width = 20
num_of_rectangles = 8
for i in range(num_of_rectangles):
    forward(length)
    right(90)
    forward(width)
    right(90)
    forward(length)
    right(90)
    forward(width)
    right(90)
    penup()
    circle(50, 180/num_of_rectangles, 4)
    pendown()

done()

但是这段代码没有显示想要的形状,那我怎么画上面的形状呢?

您的矩形方向正确,但位置错误。我的解决方案是让每个循环在图像的中心开始和结束。这样可以确保矩形都位于中心。

from turtle import *

color('black')
begin_fill()
length = 50
width = 20
num_of_rectangles = 8
for i in range(num_of_rectangles):
    # go to corner:
    penup()
    forward(length/2)
    right(90)
    forward(width/2)
    right(90)
    pendown()
    # draw rectangle:
    forward(length)
    right(90)
    forward(width)
    right(90)
    forward(length)
    right(90)
    forward(width)
    right(90)
    penup()
    # go back to centre:
    penup()
    forward(length/2)
    right(90)
    forward(width/2)
    left(90)
    pendown()
    # turn
    right(180/num_of_rectangles)

done()

您可以将矩形绘制为 5 笔,而不是将矩形绘制为 4 笔,从其中一条边的中间开始和结束。您还需要在笔朝上的情况下到达那一侧的中间,然后回到中心(再次在笔朝上的情况下):

from turtle import *

color('black')
begin_fill()
length = 50
width = 20
num_of_rectangles = 8
penup()
for i in range(num_of_rectangles):
    # Get to middle of side and orient for drawing
    forward(width / 2)
    right(90)
    pendown()
    # Draw rectangle in 5 strokes
    forward(length / 2)
    right(90)
    forward(width)
    right(90)
    forward(length)
    right(90)
    forward(width)
    right(90)
    forward(length / 2)
    penup()
    # Reorient and get back to center
    left(90)
    backward(width / 2)
    right(180/num_of_rectangles)

done()

您使用的矩形数量错误(您只需要 6 个,而不是 8 个)并且矩形的纵横比错误。 (它比 50x20 更接近 50x32。)其他一些建议的解决方案继承了这些相同的错误,使用过多的代码来解决问题,并且看起来不像提供的图像:

from turtle import Screen, Turtle

WIDTH, HEIGHT = 200, 130
RADIUS = 120
PEN_WIDTH = 8

turtle = Turtle()
turtle.hideturtle()
turtle.width(PEN_WIDTH)

for _ in range(6):
    turtle.penup()
    turtle.circle(RADIUS, extent=30)
    turtle.pendown()

    turtle.left(57)

    for _ in range(2):
        turtle.forward(WIDTH)
        turtle.left(90)
        turtle.forward(HEIGHT)
        turtle.left(90)

    turtle.right(57)

screen = Screen()
screen.exitonclick()

要更改图像的大小,请将 WIDTHHEIGHTRADIUSPEN_WIDTH 乘以或除以相同的系数。

这是一些东西:

from turtle import *
ht() # Hides turtle
w,h,n = 130,200,6 # Set the width,height & amount of rectangles
for _ in range(n):
    pu()
    fd(h//2) # Note the double slashes to avoid error
    pd()
    for f in [w//2,h,w,h,w//2]:
        rt(90)
        fd(f)
    pu()
    rt(90)
    fd(h//2)
    rt(180-180//n)