如何使用Python Turtle绘制互不重叠的N个正七边形
问题解决方法
重叠原因
- 绘制完单个正七边形后,仅调整了海龟朝向,没有移动海龟位置,下一个七边形的绘制起点和上一个完全重合
- 填充语句放在了全局,所有图形会被识别为同一个填充区域
- 实例化的
tegan海龟对象未被实际使用,全局海龟和实例混用可能引发额外异常
修改后可运行代码
import turtle tegan = turtle.Turtle() length = 100 degrees = 51.42857 # 两个七边形之间的间隔距离,可自行调整 gap = 120 numbers = int(input('number of 50 Pence: ')) print(numbers) def draw_heptagon(tegan, length, numbers, gap): # 先移动到左侧起始位置,避免第一个图形超出画布 tegan.penup() tegan.goto(-(numbers-1)*gap/2, 0) tegan.pendown() for i in range(numbers): # 单个七边形填充放在循环内部 tegan.fillcolor('grey') tegan.begin_fill() for x in range(7): tegan.forward(length) tegan.left(degrees) tegan.end_fill() # 画完一个后抬起笔移动到下一个位置 tegan.penup() tegan.forward(gap) tegan.pendown() draw_heptagon(tegan, length, numbers, gap) turtle.done()
自定义调整说明
- 调整
gap参数可以修改两个七边形之间的间距 - 如果要实现环形排列,可保留原代码的角度旋转逻辑,同时每次画完后向前移动固定距离再旋转即可
- 可以在循环中修改
fillcolor的值,实现不同七边形用不同颜色填充的效果
内容的提问来源于stack exchange,提问作者Prashanthan Kailainathan
相关产品推荐
相关产品推荐

