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

如何修改TurtleWorld的ZigZag代码,实现交替执行Zig与Zag以绘制n个峰?

解决:绘制含n个峰的锯齿形海龟图案

需求说明

编写ZigZag(turtle, n)函数,使用turtle绘制包含n个峰的锯齿形图案:

  • 当n=5时,图案需包含5个峰、4个谷
  • 绘制完成后,海龟必须回到初始位置

原代码问题

原代码中zig和zag函数内部包含循环,调用一次就会生成多个峰/谷,且zigzag函数的循环逻辑导致先批量执行Zig再批量执行Zag,无法交替生成峰谷,不符合需求。

修改后的代码

from TurtleWorld import *

world = TurtleWorld()
franklin = Turtle()

def zig(turtle):
    # 绘制单个峰(Zig)
    fd(turtle, 25)
    rt(turtle, 90)
    fd(turtle, 25)
    rt(turtle, 90)  # 调整方向,确保下一个动作连续

def zag(turtle):
    # 绘制单个谷(Zag)
    fd(turtle, 25)
    lt(turtle, 90)
    fd(turtle, 25)
    lt(turtle, 90)  # 调整方向,确保下一个动作连续

def zigzag(turtle, n):
    lt(turtle, 45)  # 初始调整方向,让图案呈45度倾斜
    # 交替绘制峰和谷:n个峰对应n-1个谷
    for i in range(n):
        zig(turtle)
        if i < n - 1:
            zag(turtle)
    # 让海龟回到初始位置
    rt(turtle, 180)
    fd(turtle, 25 * (2 ** 0.5))  # 移动斜边长度(25*√2)抵消位移
    rt(turtle, 180)

zigzag(franklin, 5)
wait_for_user()

关键修改点

  • 拆分zig和zag为单次操作:移除函数内部的循环,每个函数仅绘制一个峰或谷,并调整方向保证后续绘制的连续性。
  • 调整zigzag循环逻辑:循环n次绘制峰,仅在非最后一次循环时绘制谷,确保n个峰对应n-1个谷。
  • 添加回位逻辑:通过反向移动斜边长度,让海龟最终回到初始位置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 12:20:50