【发布时间】:2017-03-05 16:19:37
【问题描述】:
希望我能很好地解释这一点。我目前正在使用辅助函数在python的海龟图形窗口中绘制一个六角星。首先,我们必须创建一个函数来绘制一个三角形。这是我的代码:
import turtle
wn = turtle.Screen()
tess = turtle.Turtle()
tess.speed(30)
def triangle(sz):
for i in range(3):
tess.fd(sz)
tess.lt(120)
然后,我们不得不使用三角形函数来绘制一个六角星。这是我的代码:
def sixPtdStar(sz):
triangle(sz)
tess.lt(90)
tess.pu()
tess.fd(80)
tess.rt(90)
tess.fd(120)
tess.pd()
tess.rt(180)
triangle(sz)
现在,对我来说,这一切都很顺利。但是我们对这两个函数的测试运行的参数是 sz = 120(所以在 shell 中我们输入了 SixPtdStar(120) 并且它会运行。但是我们必须用一个新函数绘制一排星星,并且然后在另一个函数中由这些星行组成的 BOX 轮廓。这是我的代码:
def rowOfStars(numInRow,sz):
for i in range(numInRow):
sixPtdStar(sz)
tess.pu()
tess.lt(90)
tess.fd(80)
tess.lt(90)
def sqrOfRows(numInRow, sz):
for i in range(4):
rowOfStars(numInRow, sz)
tess.rt(90)
虽然这完成了任务,但只有当 sz = 120 时才会这样做。对于我们在 rowOfStars 函数上运行的测试,参数应该是 (6, 72) 并且对于 sqrOfRows 函数上的测试运行,我们的参数应该是 (6, 36)。
所以我的问题是这样的。无论 sz 等于什么,我怎样才能完成这项工作?当我按原样运行它时(对于 rowOfStars 使用 (6, 72) 或对于 sqrOfRows 使用 (6, 36)),笔移动得太远了,因为三角形不再那么大了。
如果需要更多信息,请告诉我!谢谢! (我使用的是 Python 3.5.2)
【问题讨论】:
-
非常感谢大家。我知道主要问题在于我的形状的缩放,因为我移动了多少笔以使其进入“正确”位置。还要感谢这里和那里的小调整和建议,比如使用“最快”而不是数字!非常感谢!!
标签: python graphics python-3.5 turtle-graphics