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
相关产品推荐
相关产品推荐

