Python turtle绘图调用封装的配置函数报NameError如何解决
错误原因
- 变量作用域问题:
tonysetup、torysetup函数中定义的tony、tory属于函数局部变量,仅能在函数内部访问,外部的绘图函数无法直接调用,因此触发NameError - 实例化错误:
torysetup中tory = turtle.Turtle漏写了括号,没有完成海龟对象的实例化,即便解决作用域问题也会运行报错 - 调用遗漏:
torystarburst函数中没有调用torysetup初始化海龟,逻辑不完整
修复方案
将配置函数中完成初始化的海龟对象作为返回值抛出,绘图函数中接收该返回值后再执行绘图逻辑即可,修改后的完整代码如下:
import turtle def tonysetup(): tony = turtle.Turtle() tony.shape("turtle") tony.pensize(1.05) tony.speed(20) # 返回配置好的海龟对象 return tony def torysetup(): # 补全括号完成实例化 tory = turtle.Turtle() tory.shape("turtle") tory.pensize(1.05) tory.speed(20) tory.penup() tory.backward(75) tory.left(90) tory.forward(25) tory.right(90) tory.pendown() # 返回配置好的海龟对象 return tory def tonyspirograph(): # 接收配置好的海龟对象 tony = tonysetup() tony.speed(100) for i in range(12): for color in ("red", "white", "blue"): tony.color(color) tony.circle(62.5) tony.circle(87.5) tony.left(10) tony.hideturtle() def torystarburst(): # 先调用配置函数接收海龟对象 tory = torysetup() for i in range(24): for color in ("red", "white", "blue"): tory.color(color) tory.forward(150) tory.right(145) tory.hideturtle() def main(): tonyspirograph() torystarburst() # 保持绘图窗口不自动关闭,不需要可删除 turtle.done() print("Star Spangled Spirograph: by *** *******") print("Thank you veterans!") main()
内容的提问来源于stack exchange,提问作者oofalladeez343
相关产品推荐
相关产品推荐

