-1

私はPythonを使用しています。再帰的な方法でカウントを維持しようとしています。を使用するとエラーが発生しますcount+=1。何故ですか?を使用してもエラーが発生しますsum=sum+count。これはエラーです:

割り当て前に参照されたローカル変数 'c​​ount'

これが私のコードです:

def receiveOnePing(mySocket, ID, timeout, destAddr):
    #receives ping
    timeLeft = timeout
    while 1:
        startedSelect = time.time()
        whatReady = select.select([mySocket], [], [], timeLeft)
        howLongInSelect = (time.time() - startedSelect)
        if whatReady[0] == []: # Timeout
            return "Request timed out."
        timeReceived = time.time()
        recPacket, addr = mySocket.recvfrom(1024)  
        header = recPacket[20:28]
        type, code, checksum, id, sequence= struct.unpack("bbHHh", header)     
        if id ==ID:
            sizeofdouble = struct.calcsize("d")#returns size of structure
            timeSent = struct.unpack("d", recPacket[28 : 28+sizeofdouble])[0]
            print "Type:%d Code:%d Checksum:0x%08x Packet ID:%d Sequence:%d RTT:%d ms % (type, code, checksum, id, sequence, rtt)
            count+=1
        timeLeft = timeLeft - howLongInSelect
        if timeLeft <= 0:
            return "Request timed out."
        else :
            return "REPLY from %s " % destAddr             
4

3 に答える 3

2

名前カウントをオブジェクトにまだ割り当てていません。参照する前にカウントを割り当てる必要があります。試す:

count = 0

試す前にcount += 1

于 2013-10-10T03:21:06.073 に答える
2

print "Type.... 行で文字列を終了していません。この行には終了引用符が必要です。

于 2013-10-10T03:22:57.917 に答える