好的,这是我的困境:
我正在为 subreddit 开发一个常见问题解答机器人。我在布尔逻辑方面遇到了麻烦,可以使用一双更有经验的眼睛(这是我在 Python 中的第一次冒险)。现在,机器人基本上是在向我创建的测试 subreddit 发送垃圾邮件。而不是分享特定信息,这里有一个例子,它显示了我遇到的确切问题:
#Define Key Words
##################################
#System Requirements Definitions
sysReq1 = ('system requirements' and '?')
sysReq2 = ('can' and ('handle' or 'play' or 'run') and ('netbook' or 'notebook' or 'pc' or 'mac' or 'macbook' or 'laptop' or 'comp' or 'computer') and '?')
#System Requirements Response
sysReqResponse = 'PROGRESS'
##################################
testString1 = "i hate this"
#intended result for 1: nothing
testString2 = "is that real?"
#intended result for 2: nothing
testString3 = "What are the system requirements?"
#intended result for 3: 'PROGRESS'
print testString1
if (sysReq1 or sysReq2) in testString1.lower():
print sysReqResponse
print testString2
if (sysReq1 or sysReq2) in testString2.lower():
print sysReqResponse
print testString3
if (sysReq1 or sysReq2) in testString2.lower():
print sysReqResponse
当你运行它时,它会显示:
i hate this
is that real?
PROGRESS
What are the system requirements?
PROGRESS
它不断返回 testString2 的值。我认为这与“?”有关。但真的不知道如何或为什么或该怎么做。帮助!
编辑:这是我希望它显示的内容:
当你运行它时,它会显示:
i hate this
is that real?
What are the system requirements?
PROGRESS
到目前为止,我发现如果我更改我sysReq1 = ('system requirements' and '?')
的 tosysReq1 = 'system requirements' '?'
并且只检查if
for sysReq1
,它会返回战斗值。问题是我真的需要这些or
语句来减少混乱/冗余。
存在 sysReq2 的原因是因为有些人对相同的答案提出了不同的问题:
它可以在我的上网本上运行吗?
我的电脑可以处理吗?
可以在我的mac上玩吗?
这不包括“我能做到”的变体,但你明白了。所有这些都应返回相同的值(在本例中为“PROGRESS”)