在python中使用For / while循环挣扎

时间:2018-05-02 21:46:12

标签: python python-3.x

非常感谢社区到目前为止提供的帮助,但我遇到了另一个绊脚石。

我正在尝试运行一个绘制三角形的脚本,然后按照输入值的指示重复多次,每个输入值都大于前一个,即如果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)

所以任何帮助都会很棒。

2 个答案:

答案 0 :(得分:0)

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

import turtle
alex = turtle.Turtle()

levels = int(input("How many triangles good sir?: "))

for i in range(1, levels + 1):
    alex.forward(20*i)
    alex.left(120)
    alex.forward(20*i)
    alex.left(120)
    alex.forward(20*i)
    alex.left(120)

turtle.mainloop()

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

如果我理解你的问题,你应该能够解决这个例子。

答案 1 :(得分:0)

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

查看你的代码。变量级别仅存储应绘制的三角形数量。变量三角形随循环的每次迭代而变化。变量 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时,结果如下: Screenshot