复制代码有效,书面代码无效?
Copied Code works, written code does not?
这里是新 Python 程序员。我试图在不使用教程的情况下在 python 中编写 Snake。我现在正在处理键绑定,但我 运行 遇到了问题
#Move snake to the left
def move_right():
right = snake.xcor()
right += 20
snake.setx(right)
#Key bind "d"
wn.listen
wn.onkeypress(move_right(), "d")
上面的代码本应在按下 "d" 键时将蛇向右移动,但它不起作用。但是,当从 YouTube 上的教程中复制功能齐全的 Pong 程序的代码时,它确实有效。复制的代码是这样的:
#Function for paddle_b_up
def paddle_b_up():
y = paddle_b.ycor()
y += 20
paddle_b.sety(y)
#key bind to the up arrow key
wn.onkeypress(paddle_b_up, "Up")
然后我开始将复制的代码完全按照在 Pong 程序中编写的那样写到 Snake 程序中,但它不起作用。我很困扰。缩进是一样的,代码是一样的(保存一些不同但一致的变量),只是 Pong 程序中的移动和键绑定代码被复制到 Snake 程序中。在不改变任何其他东西的情况下,Pong 代码可以工作,但只有当我将代码复制并粘贴到 Snake 程序中时。有什么建议吗?谢谢。
请注意对 wn.onkeypress()
的两次调用之间的区别。在复制的代码中 paddle_b_up
之后没有 ()
,但在你的代码中你有 move_right()
.
当你在函数名后加上 ()
时,它会立即调用它。但是您希望稍后在按下键时调用该函数。您需要传递对函数的引用,而不是调用函数的结果。
wn.onkeypress(move_right, "d")
在 wn.listen
之后还需要 ()
所以你调用函数。
这里是新 Python 程序员。我试图在不使用教程的情况下在 python 中编写 Snake。我现在正在处理键绑定,但我 运行 遇到了问题
#Move snake to the left
def move_right():
right = snake.xcor()
right += 20
snake.setx(right)
#Key bind "d"
wn.listen
wn.onkeypress(move_right(), "d")
上面的代码本应在按下 "d" 键时将蛇向右移动,但它不起作用。但是,当从 YouTube 上的教程中复制功能齐全的 Pong 程序的代码时,它确实有效。复制的代码是这样的:
#Function for paddle_b_up
def paddle_b_up():
y = paddle_b.ycor()
y += 20
paddle_b.sety(y)
#key bind to the up arrow key
wn.onkeypress(paddle_b_up, "Up")
然后我开始将复制的代码完全按照在 Pong 程序中编写的那样写到 Snake 程序中,但它不起作用。我很困扰。缩进是一样的,代码是一样的(保存一些不同但一致的变量),只是 Pong 程序中的移动和键绑定代码被复制到 Snake 程序中。在不改变任何其他东西的情况下,Pong 代码可以工作,但只有当我将代码复制并粘贴到 Snake 程序中时。有什么建议吗?谢谢。
请注意对 wn.onkeypress()
的两次调用之间的区别。在复制的代码中 paddle_b_up
之后没有 ()
,但在你的代码中你有 move_right()
.
当你在函数名后加上 ()
时,它会立即调用它。但是您希望稍后在按下键时调用该函数。您需要传递对函数的引用,而不是调用函数的结果。
wn.onkeypress(move_right, "d")
在 wn.listen
之后还需要 ()
所以你调用函数。