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

使用Python Turtle绘制三角形时首尾无法闭合的问题求助

问题解决:Turtle绘制三角形首尾不闭合的修正

你的角度计算是对的,但问题出在角度与边的对应顺序不匹配——你计算的是每条边对面的内角,而Turtle绘制时需要的是当前边末端(和下一条边形成)的内角对应的外角。

修正后的代码

import numpy as np
import math as m
import turtle as t

s = [3, 4, 5]

# 修正:计算每条边与下一条边的夹角(当前边末端的内角)
# a1: s0与s1的夹角(对边s2)
a1 = m.degrees(np.arccos(((s[0]**2 + s[1]**2 - s[2]**2) / (2 * s[0] * s[1]))))
# a2: s1与s2的夹角(对边s0)
a2 = m.degrees(np.arccos(((s[1]**2 + s[2]**2 - s[0]**2) / (2 * s[1] * s[2]))))
# a3: s2与s0的夹角(对边s1)
a3 = m.degrees(np.arccos(((s[2]**2 + s[0]**2 - s[1]**2) / (2 * s[2] * s[0]))))

a = [a1, a2, a3]
print(a)

p = t.Turtle()

for i in range(len(a)):
    p.forward(s[i] * 25)
    # 左转角度为180°减去当前末端的内角(外角)
    p.left(180 - a[i])

t.done()

为什么原来的代码不闭合?

你原来的a1是边s[0]对面的内角(约36.87°),但绘制时你在前进s[0]后左转180 - a1,这相当于用了错误的角度——此时应该用的是s[0]和s[1]之间的内角(约90°),对应的外角是180-90=90°,而不是180-36.87=143.13°。

修正后,每个角度都对应当前边与下一条边的夹角,左转的外角(180°-内角)能让Turtle正确转向下一条边的方向,三次转向后总角度为360°,自然闭合。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 20:52:17