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

Python turtle报错'dict' object has no attribute 'pencolor'

Turtle绘图代码报错排查

问题复现

我是Python初学者,首次在此提问。我编写了如下turtle库绘图代码:

import turtle

ws = turtle.Screen()

aTurtle = turtle.Turtle()
colors = [ "pink","yellow","blue","green","white","red"]
sketch = turtle.pen()
turtle.bgcolor("black")
for i in range(200):
    sketch.pencolor(colors[i % 6])
    sketch.width(i/100+1)
    sketch.forward(i)
    sketch.left(59)

turtle.done()

运行代码后窗口显示黑屏,同时抛出如下错误信息:

Traceback (most recent call last):
  File "C:/Users/wi n7/AppData/Local/Programs/Python/Python37/Lib/draw1.py", line 10, in <module>

    sketch.pencolor(colors[i % 6])
AttributeError: 'dict' object has no attribute 'pencolor'

报错原因

turtle.pen()无参数调用时的返回值是记录当前画笔属性的字典对象,并非支持绘图操作的Turtle实例。字典类型本身没有pencolor()、forward()这类绘图方法,直接调用就会触发属性不存在的报错。
代码开头虽然通过turtle.Turtle()创建了合法的画笔对象,但后续没有使用,反而误用pen()的返回值执行绘图逻辑,是错误的核心诱因。

修复方案

  • 移除错误的sketch = turtle.pen()赋值语句,turtle.pen()仅用来查询/批量设置画笔属性,不能用来创建可执行绘图操作的对象
  • 将sketch定义为通过turtle.Turtle()生成的合法画笔实例,之前定义后未使用的aTurtle变量可以直接删除,避免冗余

修正后可正常运行的完整代码如下:

import turtle

ws = turtle.Screen()
colors = ["pink", "yellow", "blue", "green", "white", "red"]
# 初始化真正的Turtle画笔实例
sketch = turtle.Turtle()
turtle.bgcolor("black")
for i in range(200):
    sketch.pencolor(colors[i % 6])
    sketch.width(i/100 + 1)
    sketch.forward(i)
    sketch.left(59)

turtle.done()

运行后即可在黑色背景上绘制出6色交替的螺旋图案。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 18:48:27