Python Turtle绘图:for循环绘制5个中心嵌套正方形的问题求助
解决中心嵌套正方形的绘制问题
先梳理你代码里的核心问题:
- 内层循环结束后
j的值固定为3,导致x += length[j]每次都加80,边长增长逻辑完全错误 - 当前的
forward(20)移动方式无法让正方形中心对齐,嵌套的关键是所有正方形的中心必须重合
修正思路
要实现中心嵌套,每个正方形的起始位置需要根据边长计算:假设正方形边长为size,起始坐标应为(-size/2, -size/2)——从这个点出发,向右、向上、向左、向下各走size长度,最终正方形的中心会精准落在原点(0,0)。
修正后的代码
import turtle scrn = turtle.Screen() scrn.screensize(500, 500) scrn.bgcolor('green') mike = turtle.Turtle() mike.shape('turtle') mike.color('pink') # 调慢画笔速度,方便观察绘制过程 mike.speed(2) # 定义5个正方形的边长,从小到大排列 lengths = [20, 40, 60, 80, 100] for size in lengths: # 抬笔移动到当前正方形的起始位置 mike.penup() mike.goto(-size/2, -size/2) mike.pendown() # 绘制正方形 for _ in range(4): mike.forward(size) mike.left(90) turtle.Screen().exitonclick()
关键细节说明
- 中心对齐核心:
goto(-size/2, -size/2)确保每个正方形的中心都在原点,实现完美嵌套 - 简化循环逻辑:直接遍历边长列表,不需要额外的
x变量,代码更直观 - 可选扩展:如果想从大到小绘制(外层大正方形、内层小正方形),只需把
lengths改成[100, 80, 60, 40, 20]即可
内容的提问来源于stack exchange,提问作者Louis Sypeck
相关产品推荐
相关产品推荐

