在 Turtle 中接受按键的更简单方法?
Easier Way to Accept Key Presses in Turtle?
不必像这样做又长又丑的事情:
def change_variable():
global variable
variable+=1
def function(var, key):
global variable
variable=var
turtle.listen()
turtle.onkey(change_variable, key)
有没有办法做到以下几点?我需要任何模块或更新吗?
turtle.onkey(variable+=1, key)
此外,如果能够执行以下操作,我的事情会变得容易 1000 倍,这可能吗?
while 1:
turtle.onkey(break, key)
您可以使用闭包并将丑陋合并到更小的区域:
def function(var, key):
def change_variable():
nonlocal var
var += 1
print(var) # just to prove it's incrementing
turtle.listen()
turtle.onkey(change_variable, key)
我假设全局 variable
是丑陋的一部分,如果不是并且您需要它,那么只需将其添加回去并将 nonlocal
更改为 global
。这会将闭包减少为一个内部函数。
解决方法:
while 1:
turtle.onkey(break, key)
有点类似:
def outer(key):
keep_going = True
def quit_loop():
nonlocal keep_going
keep_going = False
turtle.onkey(quit_loop, key)
turtle.listen()
while keep_going:
turtle.left(70)
turtle.forward(200)
print("Done!")
虽然可能不是您所希望的简短、简单的解决方案!
不必像这样做又长又丑的事情:
def change_variable():
global variable
variable+=1
def function(var, key):
global variable
variable=var
turtle.listen()
turtle.onkey(change_variable, key)
有没有办法做到以下几点?我需要任何模块或更新吗?
turtle.onkey(variable+=1, key)
此外,如果能够执行以下操作,我的事情会变得容易 1000 倍,这可能吗?
while 1:
turtle.onkey(break, key)
您可以使用闭包并将丑陋合并到更小的区域:
def function(var, key):
def change_variable():
nonlocal var
var += 1
print(var) # just to prove it's incrementing
turtle.listen()
turtle.onkey(change_variable, key)
我假设全局 variable
是丑陋的一部分,如果不是并且您需要它,那么只需将其添加回去并将 nonlocal
更改为 global
。这会将闭包减少为一个内部函数。
解决方法:
while 1:
turtle.onkey(break, key)
有点类似:
def outer(key):
keep_going = True
def quit_loop():
nonlocal keep_going
keep_going = False
turtle.onkey(quit_loop, key)
turtle.listen()
while keep_going:
turtle.left(70)
turtle.forward(200)
print("Done!")
虽然可能不是您所希望的简短、简单的解决方案!