我需要一些帮助。我正在用蟒蛇在乌龟上写下我的首字母,但无论出于何种原因,我都无法让乌龟移动。即使光标移动,乌龟仍然会在屏幕中间开始。即使我正在使用penup()和pendown()。
我把我的代码缩减到了这个:
import turtle
window = turtle.Screen()
window.bgcolor("red")
def draw_art():
charles = turtle.Turtle()
charles.shape("turtle")
charles.color("yellow")
charles.speed(2)
turtle.penup()
turtle.goto(-100,50)
turtle.pendown()
charles.back(100)
charles.right(90)
charles.forward(100)
charles.right(90)
charles.backward(100)
window.exitonclick()
draw_art()
答案 0 :(得分:0)
def draw_art():
charles = turtle.Turtle()
让我们谈谈移动查尔斯的为什么:
在顶部,您创建了Turtle 类的实例,并将其设置为变量 charles 。
charles 是 turtle ,是的,但你想移动 charles - 他是你的实例这个"类型"称为乌龟。
希望有助于您理解!有关更多信息,请参阅Python中的OOP。
答案 1 :(得分:0)
turtle模块为程序员提供了功能和面向对象的界面。您已经意外混合两者的 常见错误 。当你写:
charles = turtle.Turtle()
charles.forward(100)
您正在使用创建的海龟上的面向对象的界面。 (对你有好处!)但是这个:
turtle.goto(-100, 50)
在为您创建的默认乌龟上调用功能界面。有一种简单的方法可以避免这种错误 - 而不是使用这个语句:
import turtle
使用:
from turtle import Turtle, Screen
这会锁定功能界面,只允许面向对象的界面。所以你的示例代码现在看起来像:
from turtle import Turtle, Screen
def draw_art():
charles = Turtle('turtle')
charles.color('yellow')
charles.speed('slow')
charles.penup()
charles.goto(-100, 50)
charles.pendown()
charles.back(100)
charles.right(90)
charles.forward(100)
charles.right(90)
charles.backward(100)
window = Screen()
window.bgcolor('red')
draw_art()
window.exitonclick()
turtle.goto(-100, 50)
之类的通话现在会生成错误:name 'turtle' is not defined