私は、プラン英語で特定の文を取り、そこからいくつかのコマンドを抽出する 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
奇妙なことに、コマンドが「デスクトップ 3」の場合、これは xdotool 行を正しく評価して実行しますが、コマンドが「スイッチ 3」の場合は機能しません。また、「ワークスペース 3」は機能しますが、「ワークスペース 3」は機能しません。
それで、私の質問は、ここで何が起こっているのですか? ここでの条件フローとは何ですか? また、どのように評価されていますか? どうすればそれを修正できますか?私にはいくつかのアイデアがあります (おそらく「ワークスペース」は「コマンド内」にバインドされておらず、ブール値として評価されているため、単に常に True に評価されている可能性があります)、それを本当にしっかりと理解したいと思っています。
ありがとう!