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

如何使用turtle graphics绘制任意直角三角形及指定绘图角度

实现方案

角度控制基础说明

turtle的角度控制逻辑非常清晰:

  • 默认初始朝向为0°(正东/向右),角度逆时针递增:90°为正北/向上、180°为正西/向左、270°为正南/向下
  • 常用角度调整方法:
    • turtle.left(度数):以当前朝向为基准,逆时针转动指定度数
    • turtle.right(度数):以当前朝向为基准,顺时针转动指定度数
  • 数学库计算得到的弧度值需要用math.degrees()转为角度单位,才能直接传入turtle的角度参数

代码补全与完整实现

你现有代码的逻辑是先画长度为b的水平直角边,之后转向直接画斜边,问号处需要填入转向代码,转向角度可以通过反正切函数计算得到:

import turtle
import math

def isosceles(a, b):
    # a、b为两条直角边的长度
    side = math.sqrt(a ** 2 + b ** 2)
    turtle.forward(b)
    # 以下为补全的转向代码:计算角度后左转对准斜边方向
    turn_angle = 180 - math.degrees(math.atan(a / b))
    turtle.left(turn_angle)
    turtle.forward(side)
    # 补全最后一段直角边绘制,实现三角形闭合
    turtle.left(90 + math.degrees(math.atan(b / a)))
    turtle.forward(a)

# 测试示例:绘制直角边为100、200的直角三角形
isosceles(100, 200)
# 阻止绘图窗口自动关闭
turtle.done()

简化实现逻辑

如果不需要严格适配你现有代码的结构,更易理解的绘制逻辑是先画两条互相垂直的直角边,再画斜边,逻辑更直观:

import turtle
import math

def draw_right_triangle(a, b):
    hypotenuse = math.sqrt(a ** 2 + b ** 2)
    # 画第一条水平直角边
    turtle.forward(b)
    # 左转90度画垂直直角边
    turtle.left(90)
    turtle.forward(a)
    # 左转对应角度对准起点方向,绘制斜边闭合
    turtle.left(180 - math.degrees(math.atan(b / a)))
    turtle.forward(hypotenuse)

draw_right_triangle(100, 200)
turtle.done()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 16:45:00