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

如何在Python Turtle中为同尺寸圆圈设置统一颜色?

解决方案:按半径统一设置圆圈颜色

要实现相同半径的圆圈颜色完全一致,核心是将半径值与固定颜色绑定,而非使用随机值。以下是具体实现步骤:

1. 定义半径-颜色映射表

创建一个字典,把递归过程中所有可能出现的半径值,对应到你需要的固定颜色。比如初始半径为50时,递归产生的半径依次是50 → 16 → 5 → 1(最后一个会触发终止条件)。

2. 修改递归函数

在绘制每个圆圈前,根据当前半径从映射表中获取对应颜色,确保同半径的圆圈颜色统一。

修改后的完整代码:

import math
import turtle

# 自定义半径与颜色的对应关系,可按需调整
radius_color = {
    150: 'darkblue',  # 最外层大圆圈的半径(50*3)
    50: 'purple',
    16: 'pink',
    5: 'red'
}

def krug(x, y, r):
    if r < 3:
        return
    # 根据当前半径设置颜色,无匹配时用黑色作为默认
    turtle.color(radius_color.get(r, 'black'))
    
    for n in range(6):
        # 计算子圆圈的中心坐标(用math.pi替代3.14更精确)
        x1 = x + round(2 * r * math.cos(n * (math.pi / 3)))
        y1 = y + round(2 * r * math.sin(n * (math.pi / 3)))
        turtle.up()
        turtle.goto(x1, y1 - r)
        turtle.down()
        turtle.circle(r)
        # 递归绘制下一层子圆圈
        krug(x1, y1, r // 3)

# 启动递归绘制
krug(0, 0, 50)
# 绘制最外层的大圆圈,并设置对应颜色
turtle.up()
turtle.goto(0, 0 - 50 * 3)
turtle.down()
turtle.color(radius_color.get(150, 'black'))
turtle.circle(50 * 3)

turtle.done()

关键说明

  • 替换3.14为math.pi,提升坐标计算的精确性。
  • 映射表中的半径值必须与递归过程中实际产生的r值完全匹配(比如50//3=16,16//3=5),否则会使用默认颜色。
  • 最外层的大圆圈半径是50*3=150,也可以加入映射表统一颜色。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 07:53:15