Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/358.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python中的移动海龟_Python_Turtle Graphics - Fatal编程技术网

python中的移动海龟

python中的移动海龟,python,turtle-graphics,Python,Turtle Graphics,我需要一些帮助。我正在用python编写海龟的首字母缩写,但无论出于什么原因,我都无法让海龟移动。即使光标移动,海龟也会在屏幕中部开始。即使我正在使用penup()和pendown() 我将代码缩减为: import turtle window = turtle.Screen() window.bgcolor("red") def draw_art(): charles = turtle.Turtle() charles.shape("turtle")

我需要一些帮助。我正在用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类的实例,并将其设置为变量charles

查尔斯是一只乌龟,是的,但你想移动查尔斯——他就是你的“乌龟”的例子


希望这有助于你的理解!更多信息,请查看Python中的OOP

海龟模块为程序员提供了一个功能性和面向对象的界面。你犯了一个常见的错误,就是不小心把两者混在一起了。当你写作时:

charles = turtle.Turtle()
charles.forward(100)
您正在使用您创建的海龟上的面向对象接口。(对你有好处!)但这:

turtle.goto(-100, 50)
调用为您创建的默认turtle上的函数接口。有一种简单的方法可以避免此错误,而不是使用以下语句:

import turtle
使用:

这锁定了功能接口,只允许面向对象的接口。因此,您的示例代码现在如下所示:

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)
这样的调用现在将生成一个错误:
未定义名称“turtle”

您正在移动“turtle”(在代码中间)。。。但是你应该搬家“查尔斯”谢谢你。你的答案没有解释为什么从Python的角度来看,
turtle.goto(-100,50)
是完全有效的,即使它与OP的操作不一致。(提示:对于新程序员来说,这是一个令人困惑的问题,因为有人试图让海龟更容易为新程序员使用!)感谢您注意到这一疏忽,@cdlane!
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()