【发布时间】:2021-01-29 12:43:04
【问题描述】:
我正在编写一个函数,它在以原点为中心的圆的圆周上点等距点,然后在所有点之间画线。
我一直在搞乱这段代码,但我似乎无法让它按预期运行。我需要根据给定的半径和海龟中的点数制作一个圆。这是我目前所拥有的:
from turtle import *
def drawLineSeg (p, q):
up()
goto(p)
down()
goto(q)
def pntCirc (r, n):
for i in range(1, n+1):
up()
goto(0,0)
forward(r)
down()
dot(10)
L.append (pos())
right(360/n)
L = []
def clique (r, n):
pntCirc (r, n)
color ('blue')
for i in range(0, len(L)):
drawLineSeg (L[0], L[i])
drawLineSeg (L[1], L[i])
drawLineSeg (L[2], L[i])
drawLineSeg (L[3], L[i])
drawLineSeg (L[4], L[i])
drawLineSeg (L[5], L[i])
drawLineSeg (L[6], L[i])
drawLineSeg (L[7], L[i])
drawLineSeg (L[8], L[i])
drawLineSeg (L[9], L[i])
drawLineSeg (L[10], L[i])
drawLineSeg (L[11], L[i])
drawLineSeg (L[12], L[i])
drawLineSeg (L[13], L[i])
drawLineSeg (L[14], L[i])
drawLineSeg (L[15], L[i])
drawLineSeg (L[16], L[i])
drawLineSeg (L[17], L[i])
drawLineSeg (L[18], L[i])
drawLineSeg (L[19], L[i])
return
speed(50)
color ('red')
clique (300, 20)
# clique (300, 8)
# clique (300, 16)
hideturtle()
done()
在 clique 函数中,我尝试使用 for 循环和 while 循环,这正是我需要使用它才能工作的地方;我不能再使用enumerate、numpy 或matplotlib 之类的技术性内容。我需要对任意数量的给定点进行这项工作,而不仅仅是我测试的 20 点。例如,当我测试 8 分时,它会抛出 IndexError。我如何用一个代码而不是硬写来做到这一点?
clique (300, 20)
# clique (300, 8)
# clique (300, 16)
如上所述,我已对其进行硬编码,以便在使用 20 分时给我完整的结果 (this is the full model that I hard coded the function for),但如果我只是输入:
for i in range(0, len(L)):
drawLineSeg (L[0], L[i])
任何帮助将不胜感激,因为我目前陷入困境并且不知道如何从这里开始。
【问题讨论】:
-
欢迎来到 SO!您将需要一个内部循环——对于每个点,对于列表其余部分中的每个其他点,在它们之间画一条线。你离这里很近。
标签: python python-3.x list turtle-graphics python-turtle