-1

このコードを実行すると、UnboundLocalError: local variable 'hhh' referenced before assign. が返されます。ただし、グローバル文字列 'temp' は、同様の方法で定義されているにもかかわらず、このようなエラーで応答しません。どんな助けでも素晴らしいでしょう、ありがとう。

    import random, os
def start():
    global level
    global hhh
    global temp
    level=1
    temp='     +-!'
    hhh='[X'
    os.system('CLS')
    actualcrawl()
def actualcrawl():
    print (temp)
    for a in range(2,128):
        hhh=hhh+temp[random.randrange(1,8)]
    hhh=hhh[:79]+'>'+hhh[80:]
    for i in range(1,3):
        a=random.randrange(3,8)
        b=random.randrange(6,15)
        hhh=hhh[:16*a+b-1]+'='+hhh[16*a+b:]
    for i in range(1,9):
        print (hhh[16*i-16:16*i])
4

1 に答える 1

0

はい、この質問を見る必要があります。これらを作成した関数以外の関数でグローバル変数を使用する

簡単に言えば、名前から読み取るだけで、その名前がローカルに存在しない場合、含まれているスコープで名前を検索しようとしますtemphhh、あなたが書くと、Pythonはそれhhhがローカル変数であると信じます。

もう 1 つ重要な点として、 を使用することはお勧めしません。ほとんどの人が行う方法である、 をglobal呼び出しactualcrawl()start()、 を渡すことができます。hhh,temp

編集

簡単です:

import random,os
def start():
    level=1
    temp='     +-!'
    hhh='[X'
    os.system('CLS')
    actualcrawl(temp,hhh)

def actualcrawl(temp,hhh):
    print (temp)
    for a in range(2,128):
        hhh=hhh+temp[random.randrange(1,8)]
    hhh=hhh[:79]+'>'+hhh[80:]
    for i in range(1,3):
        a=random.randrange(3,8)
        b=random.randrange(6,15)
        hhh=hhh[:16*a+b-1]+'='+hhh[16*a+b:]
    for i in range(1,9):
        print (hhh[16*i-16:16*i])

Pythonの前にどの言語を使用していたかはわかりませんが、実際には C/C++ のように変数を宣言する必要はありません。変数はポインタですか?

于 2013-03-28T05:20:03.013 に答える