2016-11-12 5 views
0
前に参照さ

私は、次のコードをしている:ローカル変数は、Python

def popLast(aLinkedList): 
    ptr = aLinkedList 
    while ptr != None: 
     if ptr['next']['next'] == None and ptr['next'] != None: 
      del_node = ptr['data'] 
      ptr['next'] = ptr['next']['next'] 
     ptr = ptr['next'] 

    return (del_node,ptr) 

私はちょうどpopLast(myLinkedList)を使用する場合それは私に

UnboundLocalError: local variable 'del_node' referenced before assignment

を与え続け

myLinkedList = createList(['a', 'b', 0, [1, 2]]) 
for i in range(getLength(myLinkedList)): 
    (a, myLinkedList) = popLast(myLinkedList) 
print(a, end = ", new list: ") 
printList(myLinkedList) 

を入れて、そこにあります問題ない。すべてうまく動作します。私は戻ってくるタプルが問題であるかどうかはわかりません。

+0

'createlist'への参照はあなたのコードでは説明されていません。私たちに[最小、完全で、かつ証明可能な例]を与えてください(http://stackoverflow.com/help/mcve)。 –

+1

注:PEP8は 'while ptr!= None'ではなく' while ptr is None'を使うべきであることを示唆しています。 – Phrogz

答えて

1

空のリストが渡された場合、del_nodeは決して初期化されません。これがエラーの原因です。これを変更するには、まずdel_nodeをNoneに初期化してください。

def popLast(aLinkedList): 
    ptr = aLinkedList 
    del_node = None 
    while ptr is not None: 
    ...