0

私はそれがよく議論されているトピックであることを知っています.私はそれについてそこにたくさんのスレッドがあることを知っています.

未定義の変数 (ローカルとグローバルの両方) は、Python での私の最大の問題であり、それらを修正しようとしているときに何をしているのかわかりません。x = 0 または var = func(var) を追加して、機能する場所と機能する場合と機能しない場合があります。それは信じられないほどイライラしており、私は本当に助けが必要です. 先生に聞いてみたのですが、返事が来るまでに時間がかかることが多いので、直してもらいたいです。

ここに私が取り組んでいるものがあります: http://pastebin.com/KTuh7D2p (これは学校用です。)

誰かが私に可変的なことを説明してもらえますか?

次のようなエラーが発生し続けます。

Traceback (most recent call last):
  File "Project1-v2.py", line 144, in <module>
    main()
  File "Project1-v2.py", line 12, in main
    itemsSave = tagYell(items, itemsSale, itemsSave)
UnboundLocalError: local variable 'itemsSave' referenced before assignment
4

2 に答える 2

2

itemSaveこの特定のケースでは、自分自身を定義するために を使用しようとしていることが原因だと思います。これは、次のように言うのと同じです。

x = 5 + x

を初めて定義しますx

itemSaveその値を試して使用する前に、何が何であるかについていくつかのコンテキストを提供する必要があります。

たとえば、このプログラム:

myNum = 5
x = float(myNum+x)
print x

次のエラーメッセージが表示されます。

x = float(myNum+x)
NameError: name 'x' is not defined

ただし、これは問題なく機能し、「15」を出力します。

myNum = 5
x = 10
x = float(myNum+x)
print x
于 2012-10-08T02:08:58.370 に答える
2

だからここにあなたが求めているコードがあります

def main():
    print "Welcome to the shop!"
    menu()
    itemsSale = 0
    items = getItems()
    itemsSave = tagYell(items, itemsSale, itemsSave)
    itemsSale = calcTax(itemsSale)
    taxTags(items)
    printInfo(items, itemsSale, itemsSave)
    enterItem = input("To enter another item number, press 1. To end, press 0: ")
    print #Line break      

この行がエラーの原因です

itemsSave = tagYell(items, itemsSale, itemsSave)

関数に渡そうとしitemsSavetagYell()いますが、まだ値がありません。

itemsSave同じスコープに割り当てているため、Pythonはそれを認識しています。itemsSave = ...これはバインドされていないローカル変数でなければならないため、グローバル変数を調べてそこで定義されているかどうかを確認することさえしません。

于 2012-10-08T02:12:37.740 に答える