我无法贡献我的实际代码(因为它超过一万行),但我可以简要总结一下。在这里,我稍后给出症状:
def calculate_stuffs():
*global lots of stuff*
*some other stuff*
for event in pygame.event.get():
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_BACKSLASH:
try:
exec easygui.enterbox('Type command:')
except:
print "Command crashed, or Easygui is not installed."
*a lot of other stuff*
以下是工作/失败时的一些示例:
如果我输入的命令不起作用,则会返回相应的命令 消息。
如果我告诉它运行一个函数,它就可以了。
如果我告诉它读取变量(例如打印变量),它就可以了。
如果我告诉它写一个变量,它就不会做任何事情。它 甚至没有给出崩溃的消息。我把x做成了一个全局变量, 如果我说" x + = 5"
我很确定这是范围问题,但我不确定。
如果您需要我提供更多代码,请询问。当你找到答案时,请解释它的工作原理。谢谢!
答案 0 :(得分:0)
您也需要在int pickOne;
int pickTwo;
int pickThree;
int pickFour;
int drawnOne;
int drawnTwo;
int drawnThree;
int drawnFour;
语句中使用global
,因为exec
有自己的范围,如函数:
exec
将打印:
x = 10
def foo():
global x
command = 'global x; x += 1; print x'
try:
exec command
except:
print "error"
print x
foo()
print x
在10
11
11
语句中没有global x
,它会打印出来:
exec