if 语句不分隔内容

if statement not separating content

查看这段代码:

exclude = ["BURSAR", "SHOP"]
for name in exclude:
    if name in machineName: # machineName is defined further up in the script.
        inputText.insert("end", machineName + " has been excluded.\n")
    else:
        command = subprocess.Popen( commands here...)

它的工作是排除任何名称中包含某些单词的机器。

目前,如果我将两台机器传递给脚本,其中一台名为 'BURSAR3'(例如),它将记录应该排除的事实,并运行 inputText 以显示该事实.不幸的是,它还会在不应该的情况下继续将名称传递给下面的命令。我什至可以用 'if name not in exclude:' 替换 'else:',它仍然会以同样的方式失败!

我做错了什么?看起来应该这么简单...

谢谢, 克里斯。 p.s。抱歉,如果标题是垃圾 - 我想不出如何更好地定义它...

for:

之后使用可选的 else
exclude = ["BURSAR", "SHOP"]
for name in exclude:
    if name in machineName: # machineName is defined further up in the script.
        inputText.insert("end", machineName + " has been excluded.\n")
        break
else:
    command = subprocess.Popen( commands here...)

else 只有在 for 循环自然完成而没有遇到 break 时才会执行。因此,如果黑名单中的 none 个单词出现在机器名称中,则执行 else 块。

当然,还有更简单的方法:

exclude = ["BURSAR", "SHOP"]
if any((name in machineName for name in exclude)): # machineName is defined further up in the script.
    inputText.insert("end", machineName + " has been excluded.\n")
else:
    command = subprocess.Popen( commands here...)