猿问

乌龟绘制六边形和六边形网格

当前代码


#import the turtle modules  

import turtle 

  

#Start a work Screen 

ws=turtle.Screen() 

  

#Define a Turtle Instance 

geekyTurtle=turtle.Turtle() 

  

#executing loop 6 times for 6 sides 

for i in range(6): 

    

  #Move forward by 90 units  

  geekyTurtle.forward(90) 

    

  #Turn left the turtle by 300 degrees 

  geekyTurtle.left(300)

我的目标是制作六边形网格图案,但我未能正确完成。我的第一个问题是,如果你运行代码,你会得到一个六边形,但顶部是平的,我无法让它让尖角到达顶部。其次,我尝试制作网格,但失败了,我不确定为什么我无法复制相同的六边形并将其克隆到另一个六边形旁边。我将会或应该有一个我要在下面获取的图像的文件。


我得到的输出:

我试图获得的输出:

https://img2.mukewang.com/64db40c10001ad6106530485.jpg

小唯快跑啊
浏览 139回答 2
2回答

收到一只叮咚

在进入循环之前,转动 30 度。geekyTurtle.right(30)为了让它的克隆在旁边,只需将乌龟放到新位置并再次绘制形状即可:for i in range(6):  geekyTurtle.forward(90)  geekyTurtle.left(300)geekyTurtle.up()geekyTurtle.goto(90 * 3 ** .5, 0)geekyTurtle.down()for i in range(6):  geekyTurtle.forward(90)  geekyTurtle.left(300)将其放入循环中以使其具有两次以上.up()您可以使用和.goto(x, y)的想法.down()来绘制网格。

慕盖茨4494581

看起来这是一个递归可以以类似分形的方式简化的问题。初始六边形的每一边本身就是一个六边形,依此类推,填充可用空间:from turtle import Screen, TurtleSIDE = 75  # pixelsdef hexagon(side, depth):    if depth > 0:        for _ in range(6):            turtle.forward(side)            turtle.right(60)            hexagon(side, depth - 1)            turtle.left(120)screen = Screen()screen.tracer(False)  # because I have no patienceturtle = Turtle()turtle.penup()turtle.width(2)turtle.sety(-SIDE)  # center hexagons on windowturtle.pendown()turtle.left(30)  # optional, orient hexagonshexagon(SIDE, depth=6)  # depth depends on coverage areaturtle.hideturtle()screen.tracer(True)screen.exitonclick()
随时随地看视频慕课网APP

相关分类

Python
我要回答