You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Python Turtle绘制外方内斜嵌套正方形无法得到预期效果如何解决

Python Turtle 嵌套正方形绘制修复方案

原代码问题梳理

  • 画笔移动前未抬笔,会生成多余的拖拽线条
  • 绘制图形前未重置画笔朝向与角度,前序绘制的状态会干扰后续图形
  • 倾斜正方形的坐标、边长计算错误,无法实现内嵌对齐效果
  • 封装函数硬编码参数,未使用入参导致复用性差

修复后完整代码

import turtle as t
t.speed(1)

def square(x, y, side):
    t.penup()
    t.setpos(x, y)
    t.pendown()
    t.setheading(0) # 重置画笔朝向右方
    for i in range(4):
        t.forward(side)
        t.right(90)

def tiltsquare(x, y, side):
    t.penup()
    t.setpos(x, y)
    t.pendown()
    t.setheading(45) # 直接设置为45度,避免累计旋转
    for i in range(4):
        t.forward(side)
        t.right(90)

def squareinsquare(x, y, outer_side):
    # 绘制外正方形
    square(x - outer_side/2, y + outer_side/2, outer_side)
    # 计算内倾斜正方形边长:外边长/√2 ≈ 外边长*0.7071
    inner_side = outer_side * (2 ** 0.5) / 2
    # 倾斜正方形起点刚好和外正方形边中点对齐
    tiltsquare(x, y + outer_side/2, inner_side)

# 调用示例:原点为中心,外正方形边长200
squareinsquare(0, 0, 200)
t.done() # 保持窗口不自动关闭

修改说明

  • 所有绘制函数开头增加抬笔移动、落笔绘制的逻辑,消除多余轨迹
  • 每次绘制前调用setheading重置朝向,避免角度累计偏移
  • 重新计算了倾斜正方形的边长与坐标,确保四个顶点刚好落于外正方形的四条边中点,实现完美内嵌效果
  • 移除硬编码参数,支持自定义中心坐标与外正方形边长,灵活性更高
  • 末尾增加t.done()避免绘制完成后窗口自动关闭

内容的提问来源于stack exchange,提问作者iamjr15

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 15:39:02