2014-11-08 42 views
0

我遇到了以下python 3.x代码的问题,其中while(keepAlive):继续,即使在keepAlive为假之后。当用户输入“1”时,显示Killing Program...,但循环继续。我熟悉其他语言,但只是从python开始。看起来我必须犯一个简单的错误......如果有人能指出,我会很感激。如何在Python中循环结束程序

keepAlive = True 

def main(): 
    if(input("Enter 1 to end program") == "1"): 
     print("Killing program...") 
     keepAlive = False 

while(keepAlive): 
    main() 

感谢

+1

[变量作用域](http://stackoverflow.com/questions/370357/python-variable-scope-error) – Luigi 2014-11-08 23:01:36

+1

*'main'里面的'keepAlive' *和外面的不相关。阅读Python的范围http://stackoverflow.com/q/291978/3001761 – jonrsharpe 2014-11-08 23:02:11

回答

1

当前,模块keepAlive和local keepAlive是主要的两个独立的名称。要将它们绑定在一起,请声明main中的keepAlive是全局的。以下作品。

keepAlive = True 

def main(): 
    global keepAlive 
    if(input("Enter 1 to end program") == "1"): 
     print("Killing program...") 
     keepAlive = False 

while(keepAlive): 
    main() 

在Python doc索引中查找'global',你应该找到一个解释。

0

由于变量范围已经提到的,可以尝试在while循环的if声明并宣布对的keepAlive前while