2

申し訳ありませんが、これはばかげた質問でした。解決策はグローバル変数を使用するために正しいですが、私のコードには他に何か問題がありました。

これがコードの抜粋です。私は6.00xMITコースの問題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'はグローバル宣言の前に割り当てられていますglobalpaymentFound

'for'ループにとって重要な場合はグローバル変数を使用できないとどこかで読みましたが、これがwhileループで重要であるかどうかはわかりません。

このエラーが発生する理由について何か考えはありますか?

申し訳ありませんが、見栄えを良くするためにコードを再編集する必要がありました。

4

2 に答える 2

3

エラーはエラーメッセージで説明されています:「グローバル」コマンドは遅すぎます。これを試して:

global paymentFound
paymentFound = False

while paymentFound == False:
    testMid = findMid(newMin, newMax)
    ...
于 2013-03-14T01:49:19.540 に答える
0

次のようにループから「グローバル」にする必要があります。

global paymentFound
paymentFound = False

while ~:
    yourcode

私は前にこの問題に遭遇しました。

私はこのコードを試しましたが、うまくいきました:

global a 
a = 1

while a :
    if True:
        a = 0
    print('is it?')
于 2013-03-14T01:53:23.827 に答える