【发布时间】:2020-02-16 08:47:05
【问题描述】:
我需要为我的学校作业做一个,但这个代码是随机抽取的。我复制了一些 Stack Overflow 代码,但我不明白其中的逻辑。有人可以向我解释吗?
import turtle
def triangle(width,height):
if height==0:
for i in range(3):
t.fd(width)
t.left(120)
else:
triangle(width/2,height-1)
t.fd(width/2)
triangle(width/2,height-1)
t.bk(width/2)
t.left(60)
t.fd(width/2)
t.right(60)
triangle(width/2,height-1)
t.left(60)
t.bk(width/2)
t.right(60)
window = turtle.Screen()
t = turtle.Turtle()
triangle(100,2)
window.exitonclick()
第一个 if 语句是做什么的?第一个 if 语句绘制最后一个三角形还是什么?它在哪里绘制三角形,因为它从未在脚本上绘制过那个大小的三角形。唯一与 100x100x100 宽度相同大小的三角形是外面的三角形,它由许多小三角形组成。
函数中的 (height-1) 3 次,会使高度为负 1?在高度 0 处,它将绘制一个大三角形,并且窗口上没有从宽度开始然后上升然后下降的大三角形。同样在 else 语句中,宽度是 25,因为上面语句的三角形将 100 除以 2,然后再将宽度(50)除以 2?
【问题讨论】:
-
你的标题说的不是(所有)你的问题。你对 Python 的理解程度如何?例如,第一个 if 检查高度是否等于 0 - 它有什么不明确的地方吗?
-
好吧,它不会在任何地方绘制与 100x100x100 大小相同的三角形。我是初学者,但我不明白它是如何绘制的
-
也许你应该玩弄一下turtle命令来了解它们的作用(当然还要阅读文档)。一些关于递归概念的知识也会有所帮助。
-
height的命名确实具有误导性。它实际上是谢尔宾斯基三角形中递归级别的深度。