Python应用程序从While循环中断

时间:2016-02-11 18:59:39

标签: python loops while-loop

我正在创建一个小程序来杀死在我玩游戏时使用空闲带宽的程序。我遇到了一个小问题,那个问题是我的应用程序从它的循环中断了。我不是很擅长python,所以如果你能帮我理解为什么会这样,我会非常感激。

while commandStage == 0:
    command = input("Enter a command : ")
    commandStage = commandStage + 1
if "stopbits" in command:
(os.system("taskkill svchost.exe -k netsvcs"))
commandStage = commandStage - 1  

我背后的理论是,当commandStage为0时,它将等待一个命令,当它收到命令时,它将执行该命令并返回到while循环,但它不是为什么我需要帮助。

4 个答案:

答案 0 :(得分:2)

一次运行后你就完成了

commandStage = commandStage + 1

while commandStage == 0:

不再运行。

编辑注释 commandStage-1在while之外完成,如果你想在循环中完成if和-1,你需要缩进它。

根据完整评论,我想这可能只是你想要做的事情

while commandStage == 0:
  command = input("Enter a command : ")
  commandStage = commandStage + 1
  if "stopbits" in command:
    (os.system("taskkill svchost.exe -k netsvcs"))
  commandStage = commandStage - 1 

但是看到其他答案可以更好地制作无限循环(同时为真):

答案 1 :(得分:1)

使用无限循环并将​​条件移动到循环中并在不满足条件时跳出循环

while True:
    command = input("Enter a command : ")
    if "stopbits" in command:
        (os.system("taskkill svchost.exe -k netsvcs"))
    else:
        break  

看看这个http://docs.python.org/faq/design.html#why-can-t-i-use-an-assignment-in-an-expression

答案 2 :(得分:1)

我认为你真正想做的是:

while True:
    command = input("Enter a command : ")
    if "stopbits" in command:
        os.system("taskkill svchost.exe -k netsvcs")

答案 3 :(得分:0)

我进入ipython以告诉您这是如何运作的:

input(...)收到的值是一个字符串,如果测试真实性,则任何非空字符串返回True,这意味着循环立即退出。

此示例显示正在发生的事情。

In [1]: test = input("Enter >>")
Enter >> hi

In [2]: type(test)
Out[2]: str

In [3]: bool(test)
Out[3]: True

您要做的是用input包装int( )的输出。但是如果你输入的不仅仅是整数,你会遇到问题而应该做一些try: ... catch: ...陈述,而不仅仅是破坏。

您可以随时通过以下跟进问题发表评论,我会帮忙!或者在推特上打我 - @dalanmiller