我正在尝试制作一个具有多个AND,OR和方括号的搜索系统。在编写代码时,我在使用OR时遇到了一些麻烦。我不知道我的代码是错误的还是计算机是错误的,因为有时它给出正确的答案,有时却给出正确的答案。
sentence = ["A", "B", "C"]
bracket = ["X", "or", "B"]
if "or" in bracket:
index_of_or = bracket.index("or")
if bracket[index_of_or -1 ] or bracket[index_of_or +1] in sentence:
bracket = "True"
print(bracket)
else:
bracket = "False"
print(bracket)
我正在通过更改括号列表中的元素来检查代码。
我放了bracket=['X', 'or', 'Z']
并且输出为True。
为什么会这样?
答案 0 :(得分:1)
您需要分隔条件语句。你不能做这样的事情
if x or y == 7 : ...
,您必须做if x == 7 or y == 7
。
请牢记这一点,将代码的相应行更改为可读
if bracket[index_of_or -1 ] in sentence or bracket[index_of_or + 1] in sentence:
答案 1 :(得分:0)
sentence = ["A", "B", "C"]
bracket = ["X", "or", "Z"]
if "or" in bracket:
index_of_or = bracket.index("or")
if (bracket[index_of_or -1 ] or bracket[index_of_or +1]) in sentence:
bracket = "True"
print(bracket)
else:
bracket = "False"
print(bracket)
输出
False
答案 2 :(得分:0)
出现此问题是由于以下原因:
if bracket[index_of_or -1 ] or bracket[index_of_or +1] in sentence:
这实际上与显示的内容有很大不同。如果满足以下条件,则计算结果为true:
bracket[index_of_or -1 ]
的计算结果为true,或者
bracket[index_of_or +1] in sentence
的计算结果为true。
但是您认为如果满足以下条件,它的评估结果为true:
bracket[index_of_or -1 ] in sentence
的计算结果为true,或者
bracket[index_of_or +1] in sentence
的计算结果为true。
如果数字不为0,则第一个条件(bracket[index_of_or -1 ]
)的值将为True
。由于False
返回1,而{{ 1}}将其设为0,从而使其值为index_of_or = bracket.index("or")
。
要修复此问题,只需将程序更改为此:
bracket[index_of_or -1 ]
,按预期,输出将为False
。