我正在创建一个小程序来杀死在我玩游戏时使用空闲带宽的程序。我遇到了一个小问题,那个问题是我的应用程序从它的循环中断了。我不是很擅长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循环,但它不是为什么我需要帮助。
答案 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