如何在python中使用turtle绘制圆?

如何在python中使用turtle绘制圆?,python,python-turtle,Python,Python Turtle,我想问一下,如何使用python中的turtle模块,仅使用turtle.forward和turtle.left绘制一个圆?我使用以下代码: for i in range(30): turtle.forward(i) turtle.left(i) turtle.done() 我得到的是,一旦我得到完整的卷曲,这条线就不会停止。如何编写代码,使我有一个特定半径的圆,并且在绘制圆时有一个句号(不使用turtle.circle)。这里的示例 导入海龟 def圆(距离、截面

我想问一下,如何使用python中的turtle模块,仅使用turtle.forward和turtle.left绘制一个圆?我使用以下代码:

 for i in range(30):
     turtle.forward(i)
     turtle.left(i)  
 turtle.done()
我得到的是,一旦我得到完整的卷曲,这条线就不会停止。如何编写代码,使我有一个特定半径的圆,并且在绘制圆时有一个句号(不使用turtle.circle)。

这里的示例

导入海龟
def圆(距离、截面):
角度=360/截面
对于范围内的i(1,截面+1):
乌龟。前进(距离)
乌龟。左(角)
圆圈(20,30)
乌龟

如果你想画一个圆,最好的办法是简化问题,如果我们考虑为圆的每个度移动1个空间,那么我们可以简单地把它写成

def draw_circle1():
对于范围内的(360):
乌龟前进(1)
乌龟。左(1)

现在我们对我们画的这个基本圆了解多少?我们知道它需要360步,每一步是1步。所以这个圆的周长是360。我们可以用一点数学来计算半径

周长=2*3.14…*半径
360 = 2 * 3.14... * 半径
360 / 2 / 3.14... = 半径
半径=57.29。。。
现在我们可以反过来,如果我们想要指定一个给定半径的圆,我们可以计算出这个圆应该有多少圆周。除以360度,我们知道在每转1度之前要走多大的一步

def draw_圆(radis):
周长=2*math.pi*radis
步长=周长/360
对于范围内的(360):
乌龟。前进(步长)
乌龟。左(1)
如果我们运行3个单独的圆圈,每个圆圈的大小都在增加,你会看到它给我们一个一致的结果

画圆(20)
画圆(40)
画圆(60)
乌龟
乌龟


现在我们有了一个函数,它可以接受一个半径,并根据这个半径画一个圆,

基本上,您需要绘制具有n条边的内接多边形

最初的左转将为ϴ/2

然后通过a=2rsin(ϴ/2)向前

每个向前之后都会有一个全ϴ旋转,除了在最后一个向前之后,我们只希望旋转ϴ/2,这样航向将正确更新为与圆(或弧)相切

像这样的,

import turtle
import math

def circle2(radius,extent=360,steps=360):
    if extent<360 and steps==360:
        steps=extent
    
    theta=extent/steps
    step_size=2*radius*math.sin(math.radians(theta/2))
    turtle.left(theta/2)
    turtle.forward(step_size)
    for i in range(1,steps):
        turtle.left(theta)
        turtle.forward(step_size)
    
    turtle.left(theta/2)
    

turtle.hideturtle()
turtle.speed(0)
turtle.getscreen().tracer(False)

circle2(50)
circle2(100,180)
turtle.up()
turtle.home()
turtle.down()
circle2(130)
circle2(130,360,10)

turtle.update()
turtle.mainloop()
导入海龟
输入数学
def圆圈2(半径、范围=360,步长=360):

如果延伸如果你想画30条边,然后回到起点面对原始方向,你每次必须旋转多少度?这是否取决于边的长度?就像整个旋转是360度,然后取决于边的长度,我必须计算出一个旋转的角度,这是你的观点吗?想象一下,你没有前进就旋转,想用30步完成一个完整的旋转,每一步你会旋转多少?当你不了解一个情况时,最好从一个简单的问题开始;在这里,试着用4个步骤来完成。如果你现在每向前走一步,你需要转多少圈?在你的房间里试试,然后走到广场上。如果你做一个更大的正方形,角度会改变吗?然后你就有了答案……把它分配给一个变量:
steps=10;对于范围内的i(步数):turtle.forward();海龟。左(360步/步)