2015-07-11 53 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的答案标记为接受,我的答案会再次被自动标记。 :-)选择最能帮助你的人(但也不允许)。 –