在 turtle (python) 的变量中存储位置时出现问题

Trouble with storing a position in a variable in turtle (python)

代码

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 函数然后停止。

你的最后一个问题涉及不应该包含的括号:

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 编程。

首先:你不需要;

第二:对于 运行 函数,您需要函数名称和 () - 即。 reset() - 你有 reset

第三:return结束函数(returns到调用函数的地方)并且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()