在 python 中移动乌龟

Moving turtle in python

我需要一些帮助。我正在努力用 python 中的乌龟写下我的姓名首字母,但无论出于何种原因,我都无法让乌龟移动。即使光标移动,海龟仍然从屏幕中间开始。即使我使用 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()

def draw_art(): charles = turtle.Turtle()

让我们谈谈移动查尔斯的原因

在上面,您创建了 Turtle class 实例 ,并将其设置为变量 查尔斯

charles是一只turtle,是的,但是你想移动charles --他是这个 "type" 的 实例 ,称为 turtle

希望对您的理解有所帮助!有关更多信息,请查看 Python 中的 OOP。

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