【问题标题】:4 triangles to be aligned vertically4个三角形垂直对齐
【发布时间】:2021-12-21 23:07:00
【问题描述】:

所以我正在开发一个程序,我希望输出有 4 个长度为 20、40、60、80 的三角形垂直放置,每个三角形的顶部应该正好是上面三角形基线的一半。

我已经设法让前两个三角形正确,但不能让前两个按照我想要的方式对齐。我知道我在某个地方出错了,但我似乎看不到它

from turtle import *
NUMBER_OF_SHAPES = 4

for shape in range(1, NUMBER_OF_SHAPES + 1):
    #Draw a Triangle
    for sides in range(3):
        forward(20 * shape)
        left(120)
        
   #Move forward to start position of next triangle
    penup()
    left(120)
    forward(20 * shape)
    right(120)
    pendown()

【问题讨论】:

    标签: python loops iteration turtle-graphics python-turtle


    【解决方案1】:
    from turtle import *
    import time
    NUMBER_OF_SHAPES = 4
    
    for shape in range(1, NUMBER_OF_SHAPES + 1):
        #Draw a Triangle
        for sides in range(5): #redraw some edges to place the cursor on the top 
            forward(20 * shape)
            left(120)
            
       #Move forward to start position of next triangle
        penup()
        right(60)
        forward(10 * (shape+1)) # half of the size of the next triangle
        right(180)
        time.sleep(0.5)
        pendown()
    

    【讨论】:

      【解决方案2】:

      在三角形之外思考:

      from turtle import *
      
      for length in range(20, 100, 20):
          penup()
          sety(length + ycor())
          pendown()
      
          circle(-2*length/3, steps=3)
      
      hideturtle()
      exitonclick()
      

      这里使用 turtle 的circle() 方法来实现两个目标,第一个是绘制一个三角形steps=3,第二个是使用负半径从顶点开始绘制居中的三角形。除此之外,我们只需要调整垂直位置即可。

      就您的代码而言,我相信问题比您尝试解决的问题要简单。如果我们先将三角形的长度向前移动 一半,然后从那里开始构建,事情会变得更容易:

      from turtle import *
      
      NUMBER_OF_SHAPES = 4
      
      for shape in range(1, NUMBER_OF_SHAPES + 1):
          forward(10 * shape)
      
          for _ in range(4):
              left(120)
              forward(20 * shape)
      
          right(120)
      
      exitonclick()
      

      这与反转循环中步骤的顺序相结合,并将迭代次数增加到 4 次,使我们为下一个三角形居中。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-05-11
        • 2023-03-27
        • 2019-03-10
        • 2017-09-04
        • 2017-05-07
        • 1970-01-01
        • 2017-12-10
        相关资源
        最近更新 更多