将位置存储在乌龟(python)中的变量中的麻烦

时间:2016-11-02 04:12:58

标签: python turtle-graphics

代码

import turtle
window = turtle.Screen()
pen = turtle.Turtle()
def reset(p):
    pen.up()
    pen.goto(p);
    pen.forward(30);
    pen.down();
    pen.forward(100);
def cdraw():
   p = pen.position();
   for x in range(180):
      pen.backward(1)
      pen.right(1)
  return p;
  reset

我的重置功能似乎不起作用,我认为问题出在我的goto(p)行上。我不确定我是否可以使用:

 p = pen.position();

我的代码目前运行cdraw函数然后停止。

2 个答案:

答案 0 :(得分:0)

您的上一个问题涉及不应包含的括号:

turtle.onscreenclick(star()) -> turtle.onscreenclick(star)

这是所需的反向缺失括号:

reset -> reset()

但还有其他问题 - 括号与否,永远不会出现任何直接跟在return语句之后的代码:

return p;
reset  # never reached

您提供的代码段从不调用cdraw(),因此永远不会调用reset()。最后,分号在正确编写的Python程序中确实没有位置。

以下是我对您的计划目标的最佳猜测,但没有足够的信息可以确定:

import turtle

def reset(p):
    pen.up()
    pen.goto(p)
    pen.forward(30)
    pen.down()
    pen.forward(100)

def cdraw():
    p = pen.position()
    for x in range(180):
        pen.backward(1)
        pen.right(1)
    reset(p)

window = turtle.Screen()

pen = turtle.Turtle()

cdraw()

window.exitonclick()

这些问题不是关于乌龟图形,而是关于基本的Python编程。

答案 1 :(得分:0)

首先:您不需要;

第二:要运行功能,您需要功能名称和() - 即。 reset() - 您有reset

第三:return结束函数(返回调用函数的位置),return之后的所有内容都不会被执行。

import turtle

# --- functions ---

def reset(p):
    pen.up()
    pen.goto(p);
    pen.forward(30);
    pen.down();
    pen.forward(100);

def cdraw():
    p = pen.position();
    for x in range(180):
      pen.backward(1)
      pen.right(1)
    # call function `reset` with `p`
    reset(p)

# --- main ---

window = turtle.Screen()

pen = turtle.Turtle()

cdraw()