2012-11-30 79 views
0

我已經編寫了一個Python函數randomizer(),它隨機化文件中的行,然後將它們寫入std輸出。它本身就沒有問題。現在,我希望能夠遍歷這個過程的時候,用戶自定義數字,所以我寫:Python:在while循環中調用函數導致失控遞歸

def iterator(): 
    print("Number of iterations: ") 
    total_iterations = raw_input() 
    current_iteration = 1 
    while current_iteration <= total_iterations: 
     randomizer() 
     current_iteration = current_iteration + 1 

如果我這樣做,randomizer()只是不斷重複自己,直到我手動終止它。但是,如果while循環是

while current_iteration <= total_iterations: 
    random.shuffle(listname) 
    current_iteration = current_iteration + 1 

然後iterator()在指定的運行次數後停止。如果我在iterator()的while循環內寫入randomizer()的整個代碼,則會出現同樣的問題。這告訴我,在while循環中調用一個函數時有問題,但我無法弄清楚什麼。

+1

這應該給你一個錯誤,除非額外的縮進是一個錯字。 – asheeshr

+0

是的,額外縮進是一個錯誤(現在糾正),但不是在我的代碼上。 – Koldito

+1

第二個版本真的有用嗎?問題是'raw_input()'的結果是一個字符串,而不是一個int,所以這個條件永遠不會終止。 –

回答

1

問題是raw_input()返回一個字符串,所以比較while current_iteration <= total_iterations總是返回true。

修復通過轉換成一個int

total_iterations = int(raw_input())