在循环中访问全局变量时遇到问题

2 投票
2 回答
7866 浏览
提问于 2025-04-17 19:01

抱歉,这个问题有点傻。虽然大家给出的解决方案是正确的,适用于全局变量,但我的代码还有其他问题。

这是我代码的一部分。我正在做的是麻省理工学院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: 语法警告:在全局声明之前给'paymentFound'赋值 global paymentFound

我看到过有人说,如果全局变量在'for'循环中很重要,就不能使用,但我不确定在'while'循环中是否也一样。

有没有人能告诉我为什么会出现这个错误?

抱歉,我不得不重新编辑代码,让它看起来更整洁。

2 个回答

0

你应该把它放到循环外面,像这样:

global paymentFound
paymentFound = False

while ~:
    yourcode

我之前也遇到过这个问题。

我试过这些代码,确实有效:

global a 
a = 1

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

这个错误是由错误信息描述的:你的“全局”命令太晚了。试试这个:

global paymentFound
paymentFound = False

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

撰写回答