2017-04-15 100 views
0

我有一個函數,我從我的主函數調用。Python打印語句不執行

def generate_new(tokens, outfile): 
    print('NO') 
    new_sents = [] 
    for i in range(0, len(tokens)): 
     first = tokens[i] 
     second = tokens[i] 
    print('YES') 

這工作正常。但是,當我添加一條語句時,只有第一個打印被執行。

def generate_new(tokens, outfile): 
    print('NO') 
    new_sents = [] 
    for i in range(0, len(tokens)): 
     first = tokens[i] 
     second = tokens[i+1] 
     first_found = first 
    print('YES') 

我已經試過沖洗緩衝區。我懷疑這是一個縮進問題,但此代碼以前運行良好。我在函數的末尾添加了一些語句,從此它不會執行循環外部的語句。可能是什麼問題?謝謝。

+2

難道你沒有得到任何出界的訪問錯誤? –

回答

2

的問題是,你正在訪問的列表tokens出界,

range(0, len(tokens))去從0len(tokens)-1

現在,當你訪問tokens[i+1],它拋出一個索引出界異常並停止執行。結果循環沒有被執行。

您應該能夠在控制檯上看到Exception。

無論如何,修復 -

要麼改變邏輯或迭代只能做到len(tokens)-1

我希望解釋這個問題。

+0

好的。作爲一個旁註,我敢打賭,如果他看到了一個他可能已經意識到它出錯的例外,所以我想知道他是否有一個嘗試塊隱藏異常,是另一個初學者常犯的錯誤。 – spectras

+0

@spectras'嘗試除''只是'''通過'在'except'的塊是錯誤的主要原因。 –

+0

啊是的,我很專注於在其他地方找到缺點,沒有注意到這一點。謝謝! – user1710080