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

Python turtle分形绘制实现运行时随机选择分形类型的方法咨询

实现随机选择分形绘制的修改方案

你原有代码需要先做基础调整再添加随机逻辑,具体操作如下:

  • 原代码的两个分形绘制逻辑直接写在全局作用域,运行时会依次执行,需要先分别封装为独立函数
  • 原谢尔宾斯基部分存在命名冲突:Turtle实例和绘制函数都叫triangle,需要修改避免报错
  • 原代码存在缩进错误,需要先修正缩进才能正常运行

核心随机选择逻辑

你已经导入了random库,完成函数封装后,在代码末尾添加如下代码即可实现随机二选一执行:

if random.choice([True, False]):
    draw_koch()
else:
    draw_sierpinski()

完整可运行参考代码

import turtle as tu, random

# 科赫曲线绘制逻辑封装
def Koch(length):
    if length <= 2 :
        tu.fd(length)
        return
    Koch(length/3)
    tu.lt(60)
    Koch(length/3)
    tu.rt(120)
    Koch(length/3)
    tu.lt(60)
    Koch(length/3)

def draw_koch():
    tu.clear()
    tu.reset()
    tu.speed(166)
    length = 300.0
    tu.penup()
    tu.backward(length/2.0)
    tu.pendown()
    Koch(length)
    tu.done()

# 谢尔宾斯基三角形绘制逻辑封装
def getMid(p1,p2):
    return ( (p1[0]+p2[0]) / 2, (p1[1] + p2[1]) / 2) 

def draw_sierpinski():
    sier_tri = tu.Turtle()
    sier_tri.ht()
    sier_tri.speed(0)
    sier_tri.pencolor('blue')
    points = [[-175,-125],[0,175],[175,-125]] 

    def triangle(points,depth):
        sier_tri.up()
        sier_tri.goto(points[0][0],points[0][1])
        sier_tri.down()
        sier_tri.goto(points[1][0],points[1][1])
        sier_tri.goto(points[2][0],points[2][1])
        sier_tri.goto(points[0][0],points[0][1])

        if depth>0:
            triangle([points[0],
                            getMid(points[0], points[1]),
                            getMid(points[0], points[2])],
                    depth-1)
            triangle([points[1],
                            getMid(points[0], points[1]),
                            getMid(points[1], points[2])],
                    depth-1)
            triangle([points[2],
                            getMid(points[2], points[1]),
                            getMid(points[0], points[2])],
                    depth-1)
    
    triangle(points,6)
    tu.done()

# 随机选择执行逻辑
if random.choice([True, False]):
    draw_koch()
else:
    draw_sierpinski()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 20:57:03