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

编写drawCircle(radius,fillColor)函数时圆填充颜色问题求助

解决Turtle绘图中圆填充颜色不生效的问题

嘿,我看到你在实现自定义填充颜色的圆形绘制时遇到了麻烦,咱们一步步拆解问题,把它搞定~

首先看你的代码里几个关键的错误点:

  • 你把传入的fillColor参数先赋值给c,然后立刻把c设成了空字符串,直接把用户传入的颜色给清空了,这是第一个致命问题;
  • 紧接着你又写了fillColor=tom.color(),这行代码是获取海龟当前的颜色,而不是设置,等于又把传入的颜色覆盖了一次;
  • 还有填充的顺序搞反了:tom.end_fill()放在了win.exitonclick()之后,这时候窗口都已经关闭了,填充操作根本没机会执行。

下面是修正后的完整代码,我会标注每一处修改:

import turtle

def drawCircle(radius, fillColor):
    angle = 360 / 300  # 计算每次转动的角度,变量名更直观
    win = turtle.Screen()
    tom = turtle.Turtle()
    
    # 关键:设置填充颜色,用fillcolor只改填充色,color会同时改画笔和填充色
    tom.fillcolor(fillColor)
    # 如果希望画笔颜色和填充色一致,可以换成 tom.color(fillColor)
    
    tom.begin_fill()  # 开始填充,必须在绘制图形之前调用
    z = 1
    while z <= 300:
        tom.forward(radius)
        tom.right(angle)
        tom.forward(radius)
        z += 1
    tom.end_fill()  # 结束填充,要在绘制完成后、窗口关闭前执行
    
    win.exitonclick()

# 测试调用
drawCircle(1, "red")

核心修改说明:

  1. 保留用户传入的颜色参数:去掉了c=str("")这种覆盖参数的错误代码,让fillColor能正确传递到函数里;
  2. 正确设置填充颜色:使用turtle.fillcolor()来指定填充的颜色,如果你想让画笔颜色和填充颜色一样,用tom.color(fillColor)即可;
  3. 调整填充顺序:把begin_fill()放在绘制前,end_fill()放在绘制完成后、窗口关闭前,确保填充逻辑能被执行;
  4. 优化变量名:把x改成angle,r直接用radius,让代码更易读。

如果你想让函数主动请求用户输入半径和颜色,可以扩展成这样:

import turtle

def drawCircle():
    # 主动获取用户输入
    radius = float(input("请输入圆的半径:"))
    fillColor = input("请输入填充颜色(比如red、blue):")
    
    angle = 360 / 300
    win = turtle.Screen()
    tom = turtle.Turtle()
    
    tom.fillcolor(fillColor)
    tom.begin_fill()
    z = 1
    while z <= 300:
        tom.forward(radius)
        tom.right(angle)
        tom.forward(radius)
        z += 1
    tom.end_fill()
    
    win.exitonclick()

# 直接调用即可
drawCircle()

现在再运行代码,就能得到你想要的自定义颜色填充的圆形啦~

内容的提问来源于stack exchange,提问作者B. Donovan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 03:41:47