【问题标题】:Drawing a triangle using only a grid of circles, python仅使用圆形网格绘制三角形,python
【发布时间】:2020-01-13 18:03:13
【问题描述】:

我必须更改这个特定的代码,它会产生一个方形的圆形网格,我必须更改代码来制作一个三角形的圆形网格。

import turtle
window = turtle.Screen()
my_boi = turtle.Turtle()
my_boi.speed(0)
for y in range(-200,200,50):
    for x in range(-200,200,50):
       my_boi.penup()
       my_boi.setposition(x,y)
       my_boi.pendown()
       my_boi.circle(20)
window.exitonclick()

【问题讨论】:

    标签: python turtle-graphics hexagonal-tiles


    【解决方案1】:

    我确信有更聪明的方法,但这是一种方法:

    import turtle
    window = turtle.Screen()
    my_boi = turtle.Turtle()
    my_boi.speed(0)
    
    for (i,y) in enumerate(range(-200,200,50)):
        for x in range(-200+(25*i),200-(25*i),50):
           my_boi.penup()
           my_boi.setposition(x,y)
           my_boi.pendown()
           my_boi.circle(20)
    
    window.exitonclick()
    
    turtle.done()
    

    在第二个 for 循环中,范围以每边圆直径的 1/2 迭代减小。

    【讨论】:

      【解决方案2】:

      我会稍微简化一下:

      from turtle import Screen, Turtle
      
      window = Screen()
      
      my_boi = Turtle()
      my_boi.speed('fastest')
      my_boi.penup()
      
      for y in range(1, 9):
          my_boi.setposition(-25 * y + 25, 50 * y - 250)
      
          for x in range(y):
              my_boi.pendown()
              my_boi.circle(20)
              my_boi.penup()
              my_boi.forward(50)
      
      my_boi.hideturtle()
      window.exitonclick()
      

      只有每行的起始位置必须通过setposition() 计算和放置。列位置可以是简单的forward() 语句。

      【讨论】:

        最近更新 更多