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

Python Turtle绘制k次递归正方形后实现螺旋效果的函数实现问题

Python Turtle 螺旋函数实现方案

首先补全你代码中缺失的基础依赖(画笔、画布初始化、square函数定义),再实现螺旋逻辑即可,完整可运行代码如下:

from turtle import Turtle, Screen
import math

# 初始化画笔与画布
t = Turtle()
t.speed(0)
s = Screen()

# 基础正方形绘制函数
def square(x, y, side):
    t.penup()
    t.goto(x, y)
    t.pendown()
    for _ in range(4):
        t.forward(side)
        t.right(90)

def squareinsquare(x, y, side):
    square(x, y, side)
    half = side / 2
    b = math.sqrt(half**2 + half**2)
    # 原代码中的tiltsquare可参考下方逻辑实现:增加初始45度旋转即可
    # t.penup()
    # t.goto(x, y - side/2)
    # t.setheading(45)
    # t.pendown()
    # for _ in range(4):
    #     t.forward(b)
    #     t.right(90)

def fractal(x, y, startSide, k):  
    t.setpos(x, y)
    t.setheading(0)
    for i in range(k):
        square(*t.pos(), startSide)
        t.forward(startSide / 2)
        t.right(45)
        startSide /= math.sqrt(2) 

# 螺旋实现函数
def spl(x, y, stLength, k):  
    t.penup()
    t.goto(x, y)
    t.pendown()
    # 可单独设置螺旋颜色,和正方形区分
    t.pencolor("red")
    t.setheading(0)
    current_len = stLength
    # k层分形对应4*k段螺旋线段
    for _ in range(4 * k):
        t.forward(current_len)
        t.right(90)
        # 缩放比例和分形正方形的缩放比例保持一致,保证螺旋贴合分形结构
        current_len /= math.sqrt(2)

# 调用绘制
fractal(0, 0, 200, 5)
spl(0, 0, 200, 5)

s.exitonclick()

实现逻辑说明

  • 螺旋线段的缩放比例和分形正方形的缩放比例完全匹配(每次缩小为原来的1/√2),可以完美贴合你之前绘制的多层嵌套倾斜正方形结构
  • 每次旋转90度符合正方形的转角规则,4*k次迭代刚好可以走完k层分形对应的完整螺旋
  • 如果需要调整螺旋的松紧程度,可以修改旋转角度,比如转45度会得到更密的螺旋

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 15:45:03