2015-07-11 54 views
-1

我在while語句中輸入了elif語句,並且我期望當它完成其中的內容時,它會重複while命令。實際發生的事情是控制檯無限期地傳播「未知命令」。我該如何解決?elif命令在命令中不斷重複

while O == 0: 
    if bla bla bla 
     O = 1 
    elif O != 1: #This should happen after it takes all if commands above me into account 
     print('unknown command') 
+0

你錯過了':'如果bla bla bla'後,它應該是'如果bla bla bla:' –

+4

@JoeR:顯然這只是一個futzed聲明,因爲bla bla bla'也不是一個有效的表達式。添加一個冒號並不奇蹟般地使這項工作。 –

+2

它看起來像「bla bla bla」永遠不是真的,所以'O'永遠不會變成1,所以'elif'部分總是被執行。順便說一句,最好是發佈實際的可測試代碼,而不是像「bla bla bla」之類的東西。另外,'O'不是一個很好的變量名 - 它很容易將其與零混淆,儘管語法突出。 –

回答

1

只要您的O == 0爲真,elif語句也爲真(o!= 1),除非if語句爲真並且O更改爲1 因此,當執行elif語句時,它將轉至infiniteloop,因爲o的值在elif裏面沒有改變。或者在elif上添加一個break

1

顯然你的if bla bla bla測試不匹配。

但是,由於O == 0爲真,因此O != 1也是如此,您永遠不會更改O的值,從而產生無限循環。無限循環每次迭代打印'unknown command',填滿您的控制檯。

+0

嗯,上面的文本中的if命令只是爲了解釋,我其實已經:寫在實際的編碼中。所以我意識到,我只是把自己扔在一個無限循環中,我如何讓elif命令重複整個腳本?我必須重做整個想法嗎? –

+1

@PopCar:我不太清楚你在這裏問什麼。只有'while'循環被重複,而不是整個腳本。如果你需要重複其他的事情,你需要重新思考你的循環。 –

+0

@PopCar:我不介意任何一種方式,但知道你可以選擇只有*一個*答案接受;通過將Naiju的答案標記爲接受,我的答案會再次被自動標記。 :-)選擇最能幫助你的人(但也不允許)。 –