无法在While循环中访问Global VAR

时间:2013-03-14 01:46:56

标签: python while-loop global-variables

抱歉,这是一个愚蠢的问题。解决方案对于使用全局变量是正确的,但我的代码还有其他问题。

这是代码的片段。我正在研究6.00x麻省理工学院课程中的问题3 /问题集2。

paymentFound = False

while paymentFound == False:
    global paymentFound
    testMid = findMid(newMin, newMax)
    testStatus = testPayment(testMid)
    if testStatus == "done":
        paymentFound = True
        print "Lowest Payment: ",testMid
    elif testStatus == "high":
        newMax = testMid
    elif testStatus == "low":
        newMin = testMid

这是我得到的错误: pset1.3.py:32:SyntaxWarning:在全局声明之前将名称'paymentFound'分配给它   全球支付发现

我读到某个地方,如果它们对'for'循环很重要,你不能使用全局变量,但我不知道这在while循环中是否很重要。

有关我为什么会收到此错误的想法?

抱歉,不得不重新编写代码,使其看起来更具代表性。

2 个答案:

答案 0 :(得分:3)

错误消息描述了错误:您的“全局”命令为时已晚。试试这个:

global paymentFound
paymentFound = False

while paymentFound == False:
    testMid = findMid(newMin, newMax)
    ...

答案 1 :(得分:0)

你应该像这样“全局化”它:

global paymentFound
paymentFound = False

while ~:
    yourcode

我之前遇到过这个问题。

我尝试了这些代码并且确实有效:

global a 
a = 1

while a :
    if True:
        a = 0
    print('is it?')