在python中挣扎于For/while循环

在python中挣扎于For/while循环,python,python-3.x,Python,Python 3.x,非常感谢社区迄今提供的帮助,但我遇到了另一个绊脚石 我正在尝试运行一个脚本,它将绘制一个三角形,然后根据输入值的指示重复多次,每个值都大于前一个值,即如果输入4,则第一个有10条边,第二个有20条边,依此类推 当它被限制在一定数量的值时,我可以实现它。但当我使用for循环时,它会变得疯狂 我希望社区能告诉我哪里出了问题,因为必须有一个比我所取得的更优雅的解决方案 from turtle import * levels = int(input("how many triangles do you

非常感谢社区迄今提供的帮助,但我遇到了另一个绊脚石

我正在尝试运行一个脚本,它将绘制一个三角形,然后根据输入值的指示重复多次,每个值都大于前一个值,即如果输入4,则第一个有10条边,第二个有20条边,依此类推

当它被限制在一定数量的值时,我可以实现它。但当我使用for循环时,它会变得疯狂

我希望社区能告诉我哪里出了问题,因为必须有一个比我所取得的更优雅的解决方案

from turtle import *
levels = int(input("how many triangles do you want? "))
for triangles in range(1, levels + 1):
    if countList == 1:
        goto(0,0)
        forward((levels*10)/2)
        left(120)
        forward(levels*10)
        left(120)
        forward(levels*10)
        left(120)
        forward((levels*10)/2)
     else:            
        forward((levels * 10) / 2)
        left(120)
        forward(levels * 10)
        left(120)
        forward(levels * 10)
        left(120)
        forward((levels * 10) / 2)
        right(60)
        forward(levels * 10)
        right(120)
        forward(levels * 10)
        right(120)
        forward(levels * 10)
        right(120)
        forward(levels * 10)
        right(120)
        forward((levels * 10)/2)

因此,任何帮助都将是非常好的。

这里有一些简单的代码,我认为这些代码与您想要的类似(Python 3.6.5):

对于循环的每次迭代,我将海龟移动的距离乘以
I
。第一个三角形的边长20(20*1)个单位,第二个三角形的边长40(20*2)个单位,然后是60(20*3),依此类推


如果我正确理解了您的问题,您应该能够完成这个示例。

以下是我对您的问题的解释:您希望用户输入它应该绘制的三角形数。第一个三角形的长度应为10,第二个三角形的长度应为20 e.t.c

查看您的代码。变量levels仅存储应绘制的三角形数量。变量三角形是随着循环的每次迭代而变化的。变量countList尚未在任何地方定义

以下是代码如何更改以实现预期结果:

from turtle import *
levels = int(input("how many triangles do you want? "))

for triangles in range(1, levels + 1):
    forward((triangles * 10) / 2)
    left(120)
    forward(triangles * 10)
    left(120)
    forward(triangles * 10)
    left(120)
    forward((triangles * 10) / 2)

Screen().exitonclick()
由于三角形在循环的每次迭代中都会发生变化,因此需要使用它来确定要绘制的线的大小。此外,if语句是不必要的,因为第一个三角形的代码与其他三角形的代码不同之处在于:

goto(0,0)
这个函数调用也是不必要的,因为海龟是在点0,0处初始化的,画完一个完整的三角形后,它将在相同的位置结束

屏幕().exitonclick()就在那里,以确保循环终止时窗口不会立即关闭

用户输入10时,结果如下所示:

“它疯了”对任何人都没有帮助。详细描述一下你的行为。嗨,马修。你如何形容“疯狂的人”?另外,您在哪里定义countList?(我对海龟不太熟悉,countList是专门针对海龟的吗?)什么是countList?你试过先画一个三角形吗?设置一个断点并逐步完成你的代码。这样你就可以找出你在做什么以及哪里出了问题。谢谢你的帮助,让我回到了正确的道路上!
goto(0,0)