与功能参数作斗争
Struggling with function parameter
所以我有这个任务让乌龟使用函数绘制多边形:draw_poly(t, n, sz)
其中 t
= 海龟名称,n
= 角度数量,sz
= 每边的大小。我提出了以下解决方案:
import turtle
def draw_poly(t, n, sz):
t = turtle.Turtle()
angle = 360/n
for _ in range(n):
t.forward(sz)
t.left(angle)
window = turtle.Screen()
draw_poly(tess, 8, 50)
window.mainloop()
当我 运行 时,我收到一个名称错误:“名称 'tess' 未定义”。我认为因为在函数中 tess 位于参数 t
的位置,它将在函数中使用 t = turtle.Turtle()
但这似乎不起作用。
您必须创建 turtle.Turtle()
的实例并将该实例传递给 draw_poly
。例如:
import turtle
def draw_poly(t, n, sz):
angle = 360/n
for _ in range(n):
t.forward(sz)
t.left(angle)
window = turtle.Screen()
tess = turtle.Turtle()
draw_poly(tess, 8, 50)
window.mainloop()
就您的函数而言,作为第一个参数传递的内容完全无关紧要,因为使用 t = turtle.Turtle()
您会立即覆盖传递给 t
的任何内容。如果你想传递一个你可以在函数中使用的任意名称,你可以通过将它作为字符串传递(在它周围加上引号)来实现。但是这个还是要和turtle实例区分开来的,比如:
import turtle
def draw_poly(t, n, sz):
turtle.title('This window is for ' + t + '.')
t_instance = turtle.Turtle()
angle = 360/n
for _ in range(n):
t_instance.forward(sz)
t_instance.left(angle)
window = turtle.Screen()
draw_poly('tess', 8, 50)
window.mainloop()
或者你可以让海龟生活在函数之外:
import turtle
def draw_poly(t, n, sz):
angle = 360/n
for _ in range(n):
t.forward(sz)
t.left(angle)
window = turtle.Screen()
tess = turtle.Turtle()
draw_poly(tess, 8, 50)
window.mainloop()
所以我有这个任务让乌龟使用函数绘制多边形:draw_poly(t, n, sz)
其中 t
= 海龟名称,n
= 角度数量,sz
= 每边的大小。我提出了以下解决方案:
import turtle
def draw_poly(t, n, sz):
t = turtle.Turtle()
angle = 360/n
for _ in range(n):
t.forward(sz)
t.left(angle)
window = turtle.Screen()
draw_poly(tess, 8, 50)
window.mainloop()
当我 运行 时,我收到一个名称错误:“名称 'tess' 未定义”。我认为因为在函数中 tess 位于参数 t
的位置,它将在函数中使用 t = turtle.Turtle()
但这似乎不起作用。
您必须创建 turtle.Turtle()
的实例并将该实例传递给 draw_poly
。例如:
import turtle
def draw_poly(t, n, sz):
angle = 360/n
for _ in range(n):
t.forward(sz)
t.left(angle)
window = turtle.Screen()
tess = turtle.Turtle()
draw_poly(tess, 8, 50)
window.mainloop()
就您的函数而言,作为第一个参数传递的内容完全无关紧要,因为使用 t = turtle.Turtle()
您会立即覆盖传递给 t
的任何内容。如果你想传递一个你可以在函数中使用的任意名称,你可以通过将它作为字符串传递(在它周围加上引号)来实现。但是这个还是要和turtle实例区分开来的,比如:
import turtle
def draw_poly(t, n, sz):
turtle.title('This window is for ' + t + '.')
t_instance = turtle.Turtle()
angle = 360/n
for _ in range(n):
t_instance.forward(sz)
t_instance.left(angle)
window = turtle.Screen()
draw_poly('tess', 8, 50)
window.mainloop()
或者你可以让海龟生活在函数之外:
import turtle
def draw_poly(t, n, sz):
angle = 360/n
for _ in range(n):
t.forward(sz)
t.left(angle)
window = turtle.Screen()
tess = turtle.Turtle()
draw_poly(tess, 8, 50)
window.mainloop()