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

如何使用Python turtle库在五边形每条边外侧绘制对应圆形?

实现五边形各边对应圆形绘制

需求

绘制5个圆形,每个圆形分别匹配正五边形的一条边,预期效果如下:
五边形对应边圆形绘制预期效果

原有代码问题

当前编写的代码无法实现预期效果,原有代码如下:

import turtle

turtleStar = turtle.Turtle()

for s in range(5):
    turtleStar.forward(100)
    turtleStar.right(144)

turtleStar.left(36)
turtleStar.forward(62)

for p in range(4):
    turtleStar.right(72)
    turtleStar.forward(62)

for c in range(5):

    r = 50
    turtleStar.circle(r)
    turtleStar.right(100)

代码失效的核心原因:

  • 初始循环转向角度为144度,画出来的是五角星而非需要的正五边形,基础图形错误
  • 画圆的起始位置没有对齐五边形各边的中点,圆心偏移
  • 单次画圆后的转向角度计算错误,无法移动到下一条边的正确绘制位置
  • 圆半径是硬编码的固定值,没有和五边形边长做几何匹配,大小不对

可直接运行的修正代码

import turtle
import math

turtleStar = turtle.Turtle()
side_len = 100
# 几何计算匹配边长的圆半径:正五边形外接圆对应半径,保证圆直径和边长完全贴合
circle_r = (side_len / 2) / math.sin(math.radians(36))

# 先绘制正五边形
turtleStar.penup()
turtleStar.goto(-side_len/2, 0)
turtleStar.pendown()
for _ in range(5):
    turtleStar.forward(side_len)
    turtleStar.right(72)

# 逐边绘制对应圆形
turtleStar.penup()
for _ in range(5):
    # 移动到当前边的中点位置
    turtleStar.forward(side_len / 2)
    # 调整朝向,让圆形直径和当前边完全重合
    turtleStar.left(90)
    turtleStar.pendown()
    turtleStar.circle(circle_r)
    turtleStar.penup()
    # 复位朝向,移动到下一个顶点
    turtleStar.right(90)
    turtleStar.forward(side_len / 2)
    turtleStar.right(72)

turtleStar.hideturtle()
turtle.done()

代码逻辑说明

  • 圆半径通过正五边形几何公式计算得出,和边长100完全匹配,不会出现大小错位
  • 绘制圆形前后通过抬笔避免留下多余的移动轨迹
  • 每次画圆前调整海龟朝向,保证圆形和对应边精准对齐,不会出现角度偏移

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 21:21:25