2014-04-12 56 views
-1

我是Python新手,我正在嘗試編寫一個for循環來查看結果列表,對它們進行一些計算然後打印它們,但它不起作用。循環基本不起作用

正如我所說,我是新手,想要學習,如果有人有過這方面的經驗,請你向我解釋一下,我知道這可能是一個愚蠢的錯誤,但我看不到它。

for test in test_set: 
    person_id = test['person_id'] 
    place_id = test['place_id'] 
    rating = test['rating'] 
    predicted_rating = simple_nearestneighbours(person_id, place_id, 50) 



    n = 0 
    while n < 50: 

    mae = (abs(predicted_rating - rating)) 

    #return mae/ 5 
    # print mae/50 
print "MAE " + str(mae/50) 
+2

你是什麼意思「不工作」?錯誤(提供完整的追溯)?意想不到的產出(提供投入,預期和實際產出)?就目前而言,你永遠不會增加'n',所以'while'循環將永遠運行。 – jonrsharpe

+0

我原本沒有n = 0,而while循環,我認爲代碼會通過評估列表運行,因爲測試_set中的測試,並做了計算,但它沒有,所以當我添加它。輸出是一個數字,我期待比這更多。 –

+0

它只發生一次,因爲你在循環外面打印。縮進一個選項卡。 – jonrsharpe

回答

0

while循環運行無限的n將始終小於50(你永遠不會從0改變它的值),從而意味着你的for環卡住。


您可以通過內環路遞增nn += 1,但使用while循環是沒有意義在這裏解決while循環。

而不是你while循環的,我只想用一個for循環,而不是:

for n in range(50): 

這是更好,因爲你基本上只是向上迭代等量的每個時間的條件總是在滿足同一時刻。

+0

謝謝!不幸的是,它並沒有打印我認爲會打印的內容,但至少現在我知道它爲什麼不能正常工作 –

+0

@MB。很高興我能幫上忙。如果我解決了您的問題,請隨時[接受我的回答](http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work)。 –

1

您還沒有while循環遞增的n值。

這會導致while循環無限期運行,這反過來會導致for循環無限期地運行。

while循環中添加一條語句n += 1,如果您真的想在那裏使用它。