Python使用turtle库绘制逐增堆叠三角形的代码问题咨询
问题分析与优化方案
现有代码的核心问题
- 代码冗余:绘制单三角形的逻辑重复编写了3次
forward(trisize)+left(120)的语句,没有复用逻辑,也不符合需求中「添加第二个循环」的要求 - 定位逻辑错误:绘制完单个三角形后的移动坐标计算有误,无法实现三角形垂直上下堆叠的效果,实际运行后会出现三角形横向偏移、间距混乱的问题
- 移动步长不匹配:固定的20像素向上移动步长,没有和每次增加的三角形边长做适配,三角形尺寸变大后会出现重叠或者间距过大的问题
第二个循环的添加位置
第二个循环是用来简化单个三角形的绘制逻辑的,直接替换掉外层循环里手动绘制三条边的重复代码即可,放在外层的for triangles in range(1,5):循环内部、开始绘制当前三角形的位置。
修正后的参考代码
from turtle import * # 初始三角形边长 trisize = 80 # 外层循环:控制绘制4个三角形 for triangles in range(4): # 内层新增的第二个循环:绘制单个三角形的三条边 for _ in range(3): forward(trisize) left(120) # 移动到下一个三角形的绘制起点:垂直向上移动,适配当前三角形高度 penup() # 正三角形的高度为(√3/2)*边长,额外加10像素保留三角形之间的间距 left(90) forward(trisize * 0.866 + 10) right(90) pendown() # 边长逐次增加20 trisize += 20 done()
内容的提问来源于stack exchange,提问作者MrSpooge88
相关产品推荐
相关产品推荐

