[英]Control flow is coming out of while loop though no such condition is stated in Python
[英]Control flow in a while loop
在解決Project Euler的問題時,我遇到了以下與何時更新 n 相關的邏輯錯誤。
while(n<1000):
#update n
#do something with n
#do stuff
對比
while(n<1000):
#do something with n
#do stuff
#update n
在第一種情況下,即使違反了 n<1000 的條件,我最終還是使用 n 執行了操作。
這個邏輯錯誤有名字嗎? 這個錯誤有多普遍?
我試圖尋找它,我確實找到了關於預遞增和后遞增變量的東西。 雖然這接近錯誤,但這並不是這里發生的事情。 我在關於 for 循環與 while 循環的 SO 答案中找到了對此的參考,該部分描述了與 while 循環相比,for 循環如何更簡潔和直接。 本質上,使用 while 循環,我們最終會在變量更新后運行代碼,該變量可能隱藏在代碼中的某個位置。
這並不總是一個錯誤:它取決於算法。 在某些情況下,您知道n
的原始值是合法的(因此您可以進入循環),但您希望在處理中更新並使用新值。 您需要將您的代碼與您的算法相匹配。 您的第二個代碼塊for
-equivalent 的規范,並且更常見。
這屬於“因 1 個錯誤而關閉”的總標題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.