2012-06-21 17 views
1

我已經看到了多線程與具有相同問題的人,但似乎解決方案已經提供了對案件逐案基礎上,由於問題接收:「UnboundLocalError:轉讓前局部變量引用」

的獨特性

這裏是我的代碼:

loga = [(912, "Message A1") , (1000, "Message A2") , (988, "Message A3") , (1012, "Message A4") , (1002, "Message A5")] 
logb = [(926, "Message B1") , (1008, "Message B2") , (996, "Message B3") , (1019, "Message B4") , (1100, "Message B5")] 
logc = [(1056,"Message C1") , (1033, "Message C2") , (999, "Message C3") , (1054, "Message C4") , (1086, "Message C5")] 
logs = [loga, logb, logc] 
out = [] 


def find_lowest_i(lst): 
    for i in range(len(lst)): 
     log = lst[i] 
     if log: 
      t = log[0][0] 
      if i==0 or t < lowest_t: 
       lowest_i = i 
       lowest_t = t 
    return lowest_i 

while True: 
    i = find_lowest_i(logs) 
    print "i=", i 
    tpl = logs[i].pop(0) 
    print tpl 
    out.append(tpl) 
    print out 

而且我確切的錯誤:

「消息文件名線位置回溯19 find_lowest_i 13
UnboundLocalError:局部變量 'lowest_t'分配」

+0

不能確定您遇到什麼麻煩...... –

回答

1

之前提到由於連續pop ING,日誌(這個數據,第一個日誌)中的一個最終將空:

logs = [[], 
     [(1019, 'Message B4'), (1100, 'Message B5')], 
     [(1056, 'Message C1'), (1033, 'Message C2'), (999, 'Message C3'), 
     (1054, 'Message C4'), (1086, 'Message C5')]] 

在這種情況下,if log會爲我失敗= 0,並且lowest_t未初始化。 在下一迭代中,i = 1,有一個log但沒有lowest_t。例外!

+0

@Ned:不,這是不正確,看到我對你的回答發表評論。 – Junuxx

+0

你是對的,對不起。 –

+0

啊我明白了!這是有道理的。這可能很明顯,我不是很高級的Python。我會使用異常嗎? – Raj

相關問題