我正在尝试使用 Turtle 库和递归在 Python 中创建一个 Koch 雪花生成器。我有一个包含十六进制代码的字符串列表,我正在使用该变量color
让笔按列表的顺序更改颜色。如您所见,我color
在函数定义之外进行了定义,但是当我尝试运行它时,我得到 UnboundLocalError 说它color
在分配之前已被引用。如何修复错误,以便我的代码按预期运行?
这是我为生成雪花而编写的一些代码。color
应该在每次绘制一条线时增加一,所以下次绘制一条线时,使用的颜色是palette[color % 6]
import turtle
turtle.colormode(255)
palette = ["#ff0f7b","#fd445d","#fc5552","#fa8139","#f98a34","#f89b29"]
color = 0
# Draw a Koch curve
def koch(iteration, length):
if iteration == 1:
turtle.forward(length/3)
turtle.pencolor(palette[color % 6])
color += 1
else:
koch(iteration-1, length/3)
turtle.left(60)
这是我收到的错误消息:
Traceback (most recent call last):
File "C:\Users\hummi\Python Files\koch_snowflake.py", line 49, in <module>
koch_snowflake(4, 480)
File "C:\Users\hummi\Python Files\koch_snowflake.py", line 41, in koch_snowflake
koch(iteration, length)
File "C:\Users\hummi\Python Files\koch_snowflake.py", line 15, in koch
koch(iteration-1, length/3)
File "C:\Users\hummi\Python Files\koch_snowflake.py", line 15, in koch
koch(iteration-1, length/3)
File "C:\Users\hummi\Python Files\koch_snowflake.py", line 15, in koch
koch(iteration-1, length/3)
File "C:\Users\hummi\Python Files\koch_snowflake.py", line 12, in koch
turtle.pencolor(palette[color % 6])
UnboundLocalError: local variable 'color' referenced before assignment
您只需要添加一个global color
语句,如下所示:
color = 0
# Draw a Koch curve
def koch(iteration, length):
global color
if iteration == 1:
turtle.forward(length/3)
turtle.pencolor(palette[color % 6])
color += 1
如果没有添加,修改 的值color
会使其成为局部范围的变量。由于在该本地范围内,尚未分配它,并且增量语句需要变量的先前值,因此您会看到您看到的错误。添加global color
语句会强制语句引用全局color
值,即使它正在修改值。如果您只是从 中读取,则不需要color
该语句。global color
这里有一个有点奇怪的 Python 事实。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句