我正在编写一个 python 程序,它采用英语计划中的给定句子并从中提取一些命令。现在很简单,但是我从命令解析器中得到了一些意想不到的结果。在研究了一下之后,似乎我的条件逻辑没有按照我的预期进行评估。
这当然是一种非常不优雅的方式,而且过于冗长。我将完全重构它,可能使用神经网络或正则表达式或它们的组合。但在继续前进之前,我确实想了解此错误背后的逻辑,因为了解这一点非常重要。这是代码的一部分:
if (("workspace" or "screen" or "desktop" or "switch") in command) and
(("3" or "three" or "third") in command):
os.system("xdotool key ctrl+alt+3")
result = True
奇怪的是,如果命令是“桌面三”,则此正确的评估并执行 xdotool 行,但如果命令是“开关三”,则不正确,“工作区 3”也有效,但“工作区三”无效。
所以,我的问题是,这里发生了什么?这里的条件流是什么,它是如何评估的?我怎样才能最好地解决它?我有一些想法(比如可能“工作区”被简单地评估为 True,因为它不与“in command”绑定并且被评估为布尔值),但我想对它有一个真正扎实的理解。
谢谢!